当前正在练习BRIAN W KERNIGHAN DENNIS M.RITCHIE的 C编程语言书,并且以下程序应该输出最长的单词。我看不到程序中有什么问题,如果能帮助我发现问题,将不胜感激。
#include <stdio.h>
#define MAXLINE 1000
int getLine(char line[], int maxLine);
void copy(char to[], char from[]);
int main() {
int len;
int max;
char line[MAXLINE];
char longest[MAXLINE];
max = 0;
while((len = getLine(line, MAXLINE)) > 0) {
if(len > max) {
len = max;
copy(longest, line);
}
if(max > 0)
printf("Longest line is: %s ", longest);
return 0;
}
}
int getLine(char line[], int maxLine) {
int c, i;
// satir icin ongorulen maksimum harf sayisi asilmadikca
// we birsonraki karakter de EOF veya newline degilse
for(i = 0; (i < maxLine - 1) && ((c = getchar()) != EOF && c != '\n'); ++i) {
line[i] = c;
}
if(c == '\n') {
line[i] = c;
++i;
}
line[i] = '\0';
return i;
}
void copy(char to[], char from[]) {
int i;
i = 0;
while((to[i] = from[i]) != '\0')
++i;
}
答案 0 :(得分:0)
在代码的这一部分:
max = 0;
while((len = getLine(line, MAXLINE)) > 0) {
if(len > max) {
len = max;
copy(longest, line);
}
max
以0
开头。在if条件中,您将len
分配为max
的{{1}}。还有另一个问题,因为您将0
放在其中,所以程序在while
的第一次迭代后将返回0。