我想在一行中输入未知数量的输入。例如,用户可以输入: “答:1 2 3 4 5” scanf() 会将这五个数字存储到一个数组中。问题是程序不知道会有多少输入。
#include <stdio.h>
int main()
{
int i;
int input[4];
scanf("ans: " for(i = 0, i < 3,i++){scanf(" %d", &input[i]);};
return 0;
}
抱歉,我对编码完全陌生,编写此代码的正确方法是什么?或者这是不可能的? 谢谢:)
最佳答案
将 fgets()
和 sscanf()
与 "%n"
结合使用
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char input[100];
int arr[10];
//fgets(input, sizeof input, stdin);
strcpy(input, "1 2 42 56 -3 0 2018\n"); // fgets
char *pi = input;
int tmp, pp, i = 0;
while (sscanf(pi, "%d%n", &tmp, &pp) == 1) {
if (i == 10) { fprintf(stderr, "array too small\n"); exit(EXIT_FAILURE); }
pi += pp;
arr[i++] = tmp;
}
printf("got this ==>");
for (int k = 0; k < i; k++) printf(" %d", arr[k]);
puts("");
}
关于我可以在 scanf 中放入 for 循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52699455/