scanf()
IN C 接受来自命令行的多个输入?我试图在同一行上获取一个名称,后跟来自用户的任意数量的值。我知道scanf()
函数是空格/换行符分隔的。
例如,用户输入:狗 2 5 1
我知道scanf()
会读取"狗",但是我如何让它读取以下值。我不能使用scanf("%s, %d, %d, %d", a, b, c, d)
因为输入的值可能大于或少于 3 个。
您可以将参数传递给主函数本身。主的原型是
int main(int argc, char* argv[]);
您可以使用它来读取命令行参数。argc 给出参数的总数(用空格分隔),argv 是保存它的向量。
例如,用户将输入:./yourExecutable dog 2 5 1
在这种情况下,参数的数量将是 5(包括可执行文件的名称),argv[0]
是可执行文件,argv[1] 将是您的"dog"
,依此类推。
fgets()
将整行读取到字符串缓冲区。
然后使用 strtok()
按空格分割。