我被要求使用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);
}
}
在这种情况下,目录被分配给addr
(addr = "C:/Users/wavfiles/13.1.wav"
),然后我把addr
放入PlaySound()
,但它不起作用。
我长期坚持这个问题,无法继续前进。如果有人能给我建议或解决方案,我将非常感激。谢谢。
fgets()
返回的字符串包含终端换行符。你需要删除它来获取文件名。
一个简单的方法是使用strchr()
来定位换行符:
while (fgets(addr, 1000, fw) != NULL) {
char *nl = strchr(addr, '\n');
if (nl) *nl = 0;
…
}