使用c语言播放.wav文件

问题描述 投票:1回答:1

我被要求使用C语言播放.wav文件,我正在使用的编译器是Devcpp。我试图使用PlaySound()函数如下:

PlaySound("C:/Users/wavfiles/13.1.wav", NULL, SND_FILENAME); 

如果我直接将目录输入到这样的函数中,它就能够成功地播放声音。

但是,我想将目录设置为变量。我创建一个带有目录列表的文本文件并提取我想要的文件,然后将其放入PlaySound()函数中。这是我的代码的一部分:

FILE *fw;
char addr[1000]
char schapter[50];

while(fgets(addr, 1000, fw) != NULL) {
    if((strstr(addr, schapter)) != NULL) {   
        printf("\n%s", addr);
        PlaySound(addr, NULL, SND_FILENAME); 
    }
}

在这种情况下,目录被分配给addraddr = "C:/Users/wavfiles/13.1.wav"),然后我把addr放入PlaySound(),但它不起作用。

我长期坚持这个问题,无法继续前进。如果有人能给我建议或解决方案,我将非常感激。谢谢。

c playsound
1个回答
2
投票

fgets()返回的字符串包含终端换行符。你需要删除它来获取文件名。

一个简单的方法是使用strchr()来定位换行符:

while (fgets(addr, 1000, fw) != NULL) {
    char *nl = strchr(addr, '\n');
    if (nl) *nl = 0;
    …
}
© www.soinside.com 2019 - 2024. All rights reserved.