在内部使用整数" "阻止C

时间:2016-03-17 15:06:38

标签: c

我正在使用system()func在linux中使用omxplayer,如system("omxplayer /home/path/1.mp3');,我有很多名为1.mp3 2.mp3的mp3文件。我将使用rand()函数随机播放这些mp3文件。我喜欢这样做;

switch(randnum)
{
    case 1:
        system("omxplayer /home/path/1.mp3");
    case 2: 
        system("omxplayer /home/path/2.mp3");
    ...
}

我想知道是否有可能像

一样
system("omxplayer /home/path/randnum.mp3");
这可能吗?

1 个答案:

答案 0 :(得分:4)

你可以随机编号:

int randomNum = (rand() % UPPER_LIMIT) + 1;

然后使用sprintf()snprintf()创建并复制所需的字符串:

char buffer[100];
sprintf(buffer, "omxplayer /home/path/%d.mp3", randomNum);

char buffer[100];
snprintf(buffer, sizeof buffer, "omxplayer /home/path/%d.mp3", randomNum);

sprintf()snprintf()之间的区别在于snprintf()sprintf()不同,需要将缓冲区的大小作为其第二个参数。这样做是为了防止缓冲区溢出。因此, snprintf()优于sprintf() ,因为它具有额外的安全性。

最后,使用system()

致电buffer
system(buffer);