代码:
#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)
当我从终端运行命令时,它工作得很好。我想知道出了什么问题。
答案 0 :(得分:3)
system()
不使用格式字符串。它将整个命令作为文字字符串。使用sprintf()
将命令格式化为缓冲区,然后将该缓冲区发送到系统。
char buf[1024];
snprintf(buf, 1024, "afplay %ssong.mp3", folderPath);
system(buf);
或沿着这些方向的东西。