C:scanf到数组
我是C的新手,现在我正在尝试掌握基础知识,并且在将scanf数据直接读入数组时遇到问题。
现在代码看起来像这样:
int main() { int array[11]; printf("Write down your ID number!\n"); scanf("%d", array); if (array[0]=1) { printf("\nThis person is a male."); } else if (array[0]=2) { printf("\nThis person is a female."); } return 0; }
如您所见,该计划的目的是要求提供一个ID,并从第一个数字确定给定的人是男性(1)还是女性(2)。 然而,似乎我无法使它工作,因为数组没有正确填充(这是在scanf之后通过printf(数组)检查,导致随机数)。 像这样运行这个程序会得出这个人是男性的结果,无论你读到什么号码。
看起来很琐碎,我无法弄清楚问题。
if (array[0]=1)
应该是if (array[0]==1)
。
else if (array[0]=2)
与else if (array[0]=2)
相同。
请注意,赋值的表达式返回赋值 ,在这种情况下if (array[0]=1)
将始终为true ,这就是为什么如果不更改=
将始终执行if语句下面的代码的原因到==
。
=
是赋值运算符,您要比较,而不是赋值。 所以你需要==
。
另外,如果你只想要一个整数,你为什么要使用数组? 您可能还需要scanf("%d", &array[0]);
int main() { int array[11]; printf("Write down your ID number!\n"); for(int i=0;i
%d
转换说明符仅转换一个十进制整数。 它不知道你传递一个数组,它不能根据它修改它的行为。 转换说明符指定转换。
数组没有说明符,您必须明确地执行此操作。 以下是四次转换的示例:
if(scanf("%d %d %d %d", &array[0], &array[1], &array[2], &array[3]) == 4) printf("got four numbers\n");
请注意,这需要输入数字之间的空格。
如果id是单个11位数字,则最好将其视为字符串:
char id[12]; if(scanf("%11s", id) == 1) { /* inspect the *character* in id[0], compare with '1' or '2' for instance. */ }
使用
scanf("%d", &array[0]);
并使用==
进行比较而不是=
只是用
cin << array[i];
在你的for循环中,不要忘记包含以下头文件:
#include