afplay错误:AudioFileOpen失败(-43)

时间:2013-01-23 23:24:19

标签: c

代码:

#include<stdio.h>
#include<string.h>

int main (int argc, char *argv[]) {
    char folderPath[1024];
    int i = 0;
    for (i; i < (strlen(argv[0]) - 7); i++) {
        folderPath[i] = argv[0][i];
    }
    printf("Command: afplay %ssong.mp3\n", folderPath);
    system("afplay %ssong.mp3", folderPath);
    return 0;
}

所有输出:

Command: afplay /Users/carloabelli/Desktop/FUNNY/song.mp3
Error: AudioFileOpen failed (-43)

当我从终端运行命令时,它工作得很好。我想知道出了什么问题。

1 个答案:

答案 0 :(得分:3)

system()不使用格式字符串。它将整个命令作为文字字符串。使用sprintf()将命令格式化为缓冲区,然后将该缓冲区发送到系统。

char buf[1024];
snprintf(buf, 1024, "afplay %ssong.mp3", folderPath);
system(buf);

或沿着这些方向的东西。