0

代码:

#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)

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

4

1 回答 1

3

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

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

或类似的东西。

于 2013-01-23T23:29:36.847 回答