我想在一行中输入未知数量的输入。例如,用户可以输入: “ ans: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;
}
对不起,我是编码的新手,编写此代码的正确方法是什么?还是这不可能? 谢谢:)
答案 0 :(得分:0)
您一直在问这个问题。
您可以通过将scanf放入循环中来实现期望的效果。甚至可以要求用户提供他要输入的输入数量。
#include <stdio.h>
int main()
{
int i;
int input[4];
printf("Enter the number of inputs you want to give : ");
scanf("%d", &n);
for(i = 0; i < n;i++)
{
printf("Enter the input number %d : ",i);
scanf("%d", &input[i]);
}
return 0;
}
答案 1 :(得分: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("");
}