无意中发现的一个问题,求解答
这是c primer plus第五版书上的例题/*输入以q开头的单词,并将输入复制到一个临时数组里输出*/
#include <stdio.h>
#include <string.h>
#define SIZE 40
#define LIM 5
int main (void)
{
char qwords[LIM][SIZE];
char temp[LIM];
int i = 0;
while(i < LIM && gets(temp))
{
if(temp[0] != 'q')
printf("%s doesn't begin with q!\n", temp);
else
{
strcpy(qwords[i], temp);
i++;
}//endof else
}
puts("Here are the words accepted:");
for(i = 0; i < LIM; i++)
puts(qwords[i]);
return 0;
}
这个代码书上本来是char temp[SIZE];
但我打错成了char temp[LIM];
然后输入的时候就有问题了:
如果输入的第一个字符串就超过LIM的范围,程序就直接终止了;
但如果第一个字符串小于LIM,后面的字符串有大于LIM的,程序就没有终止,第一个小于LIM的字符串就不输出,
然后又试了几次,发现凡是第一个字符串小于LIM的,后面只要有一个字符串超过LIM3个字符以上的,第一个字符串就不显示,或者随机显示几个字符,这是为什么?
[ 本帖最后由 c3242404 于 2014-8-20 22:05 编辑 ]