C,从单输入线读取多个数字(scanf?)

mig*_*jek 5 c scanf c99

我在C中编写了一个应用程序,它需要输入两行.第一个输入表示int数组的大小,第二个输入包含由空格分隔的值.例如,以下输入

5
1 2 3 4 99
Run Code Online (Sandbox Code Playgroud)

应该创建一个包含的数组 {1,2,3,4,99}

最快的方法是什么?我的问题是读取多个数字而不循环遍历整个字符串检查它是空格还是数字?

谢谢.

Den*_*aia 16

int i, size;
int *v;
scanf("%d", &size);
v = malloc(size * sizeof(int));
for(i=0; i < size; i++)
    scanf("%d", &v[i]);
Run Code Online (Sandbox Code Playgroud)

free(v)完成后请记住!

此外,如果由于某种原因你已经在字符串中有数字,你可以使用 sscanf()

  • `%d`(以及大多数%转换,但不是全部转换)会自动跳过任何空格.阅读scanf文档了解详细信息! (2认同)
  • "如果出于某种原因"?你永远不应该使用`scanf`,而应该更喜欢在`sscanf`中使用`fgets`.http://c-faq.com/stdio/scanfprobs.html (2认同)