我正在尝试 K&R(例如 1-17)的练习,我想出了自己的解决方案。问题是我的程序似乎挂起,可能处于无限循环中。我省略了 NUL ('\0') 字符插入,因为我发现 C 通常会自动将它附加到字符串的末尾(不是吗?)。
有人可以帮我找出问题所在吗?
我在win8(x64)上使用带有Cygwin的GCC编译器,如果有帮助的话..
问题 - 打印所有长度超过 80 个字符的输入行
#include<stdio.h>
#define MINLEN 80
#define MAXLEN 1000
/* getlin : inputs the string and returns its length */
int getlin(char line[])
{
int c,index;
for(index = 0 ; (c != '\n') && ((c = getchar()) != EOF) && (index < MAXLEN) ; index++)
line[index] = c;
return (index); // Returns length of the input string
}
main()
{
int len;
char chArr[MAXLEN];
while((len = getlin(chArr))>0)
{
/* A printf here,(which I had originally inserted for debugging purposes) Miraculously solves the problem!!*/
if(len>=MINLEN)
printf("\n%s",chArr);
}
return 0;
}