【发布时间】:2014-12-11 07:52:14
【问题描述】:
我编写了一个程序来将数字读入整数数组 a[100]。当用户输入字符'e'或数组达到最大大小时,读取停止。
但是当代码运行时,我得到了一个意想不到的行为,当用户输入“e”时,将数字扫描到数组中会按照我在程序中的意图终止,但是 while 循环中的其余语句包括增量变量 (i++)和 printf 函数我用来调试代码,直到 while 的条件部分中的第一个条件变为 false。
#include <stdio.h>
int main(){
int a[100];
puts("Enter numbers(enter \"e\" to stop entring)\n");
int i=0;
scanf("%d",&a[i]);
while(i<100&&a[i]!='e'){
i++;;
scanf("%d",&a[i]);
printf("\n -----> %d\n",i);
}
printf("\n\t i ---> %d\t\n",i);
return 0;
}
【问题讨论】:
-
a[i]!='e'???我以为你想扫描整数。是的,'e'扩展为int,但如果这确实是您想要实现的目标,那么您为什么不使用char数组,为什么不扫描'%c'? -
检查
scanf的返回值,答案应该很明显了。 -
while(i<100 && a[i] !='e'正在与未初始化的数组进行比较。
标签: c arrays while-loop scanf