我被要求使用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()
,但它不起作用。< / p>
我长期坚持这个问题,无法继续前进。 如果有人能给我建议或解决方案,我将非常感激。 谢谢。
答案 0 :(得分:2)
fgets()
返回的字符串包含终端换行符。您需要删除它才能获取文件名。
一种简单的方法是使用strchr()
找到换行符:
while (fgets(addr, 1000, fw) != NULL) {
char *nl = strchr(addr, '\n');
if (nl) *nl = 0;
…
}