如何从键盘输入多个值(整数类型和许多不确定性)?
我需要编写一个允许用户输入任意数字的程序,每个数字都由Space分隔,当用户按下Enter时,该数字被放入每个变量Array中.
例如,
输入数字:1 2 8 9(回车)如果输入第四个(数字),它将建立四个变量来获得该值.
number [0] = 1,number [1] = 2,number [2] = 8,number [3] = 9.
输入数字:3 4 7(回车)如果输入第三个(数字),则必须建立三个变量才能得到该值.
number [0] = 3,number [1] = 4,number [2] = 7.
我试图使用扫描f功能,但它不起作用,
如果有任何好的建议,请告诉我
#include <stdio.h>
#include <windows.h>
int n, number[10];
main()
{
printf("Enter Number of integer : ");
scanf("%d", &n);
if (n == 1) {
printf("Enter integer : ");
scanf("%d", &number[0]);
} else if (n == 2) {
printf("Enter integer : ");
scanf("%d %d", &number[0], &number[1]);
} else if (n == 3) {
printf("Enter integer : ");
scanf("%d %d %d", &number[0], &number[1], &number[2]);
}
system("pause");
}
Run Code Online (Sandbox Code Playgroud)
scanf()您是否考虑过使用,fgets()和的组合来做到这一点strtok()?
例如,您可以使用scanf()来简单查询预期的输入数量。然后使用 strtok() 周围的循环来标记用户的输入:
int main()
{
char line[1024];
char *token = {0};
char delim[]={" \r\n\t"};
long telPos = 0;
int count, i;
int *array = {0};
printf("Enter Number of integers, <return> then line of integers : \n");
scanf("%d",&count);
getchar();//eat the newline (from <return>)
while (fgets(line, 1024, stdin) != NULL)
{
array = malloc(sizeof(int)*count);
token = strtok(line, delim);
i = -1;
while(token)
{
if((count - 1) > i++)
{
array[i] = atoi(token);
token = strtok(NULL, delim);
}
else
{
for(i=0;i<count;i++) printf("value %d: %d\n", i, array[i]);
}
}
//do something here with array, then free it.
free(array);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)