基本上我有一个C程序,用户输入一个数字(例如4)。定义的是将进入数组的整数数(最多10个)。但是我希望用户能够将它们输入为“1 5 2 6”(例如)。即作为白色空格分隔列表。
到目前为止:
#include<stdio.h>;
int main()
{
int no, *noArray[10];
printf("Enter no. of variables for array");
scanf("%d", &no);
printf("Enter the %d values of the array", no);
//this is where I want the scanf to be generated automatically. eg:
scanf("%d %d %d %d", noArray[0], noArray[1], noArray[2], noArray[3]);
return 0;
}
不确定我该怎么做?
由于
答案 0 :(得分:1)
scanf自动使用格式说明符/百分号之前的任何空格(%c除外,它一次只消耗一个字符,包括空格)。这意味着一行如下:
scanf("%d", &no);
实际上读取并忽略了要读取的整数之前的所有空格。因此,您可以使用for循环轻松读取由空格分隔的任意数量的整数:
for(int i = 0; i < no; i++) {
scanf("%d", &noArray[i]);
}
请注意,noArray应该是一个int数组,您需要将每个元素的地址传递给scanf,如上所述。你的#include语句后也不应该有分号。如果没有错误,编译器应该给你一个警告。
答案 1 :(得分:0)
#include <stdio.h>
int main(int argc,char *argv[])
{
int no,noArray[10];
int i = 0;
scanf("%d",&no);
while(no > 10)
{
printf("The no must be smaller than 10,please input again\n");
scanf("%d",&no);
}
for(i = 0;i < no;i++)
{
scanf("%d",&noArray[i]);
}
return 0;
}
你可以这样试试。