【发布时间】:2010-01-26 17:23:36
【问题描述】:
我买了一本名为“The C (ANSI C) PROGRAMMING LANGUAGE”的 C 书来尝试自学 C 语言。无论如何,这本书包含很多示例和实践,可以在各个章节中遵循,这很好。
无论如何,下面的代码是我对“计算最长行类型的程序”一书的回答,作者在函数getLine(char s[], int lim) 中使用了for循环。这允许在main() 函数内正确显示字符串line。但是使用 while 将不起作用 - 出于我未知的原因,也许有人可能会阐明我的错误是什么。
编辑:总结以上内容。 printf("%s\n", line); 不会显示任何内容。
感谢您的帮助。
#include <stdio.h>
#define MAXLINE 1024
getLine(char s[], int lim) {
int c, i = 0;
while((c = getchar()) != EOF && c != '\n' && i < lim) {
s[++i] = c;
}
if(c == '\n' && i != 0) {
s[++i] = c;
s[++i] = '\0';
}
return i;
}
main(void) {
int max = 0, len;
char line[MAXLINE], longest[MAXLINE];
while((len = getLine(line,MAXLINE)) > 0) {
if(len > max) {
max = len;
printf("%s\n", line);
}
}
return 0;
}
【问题讨论】:
-
请解释它以何种方式不起作用 - 无法编译、根本无法运行、产生不正确的结果或失败并带有错误代码,请在您的问题中包含示例输出和错误输出.
-
没有真正看过,但我猜这是 \n 与 \p 的问题?
-
如果你在没有
\n的情况下点击EOF,你还需要用\0终止你的字符串,否则如果你的文件没有以@结尾,你的程序将出现故障或崩溃987654328@ -
您的代码无法正常工作,因为存在问题。如果您想要更具体的答案,请提出更具体的问题。