在C

时间:2016-03-14 04:04:04

标签: c user-input scanf

如何使用scanf() IN C接受来自命令行的多个输入?我试图在同一行上获取一个名称,然后是来自用户的任意数量的值。我知道scanf()函数是空格/换行符。

例如,用户输入: 狗2 5 1

我知道scanf()会读取" dog",但如何让它读取以下值。我无法使用scanf("%s, %d, %d, %d", a, b, c, d),因为输入的值可能超过或少于3。

2 个答案:

答案 0 :(得分:1)

您可以将参数传递给main函数本身。 main的原型是

int main(int argc, char* argv[]);

您可以使用它来读取命令行参数。 argc给出了参数的总数(用空格分隔),而argv是一个包含它的向量。

例如,用户将输入:./yourExecutable dog 2 5 1 在这种情况下,参数的数量将是5(包括可执行文件的名称),argv[0]将是您的可执行文件,argv [1]将是您的"dog",依此类推。

答案 1 :(得分:0)

您可以使用fgets()将整行读取到字符串缓冲区。

然后使用strtok()按空格分割。