gpt4 book ai didi

C - 输出终端输入的最长行

转载 作者:行者123 更新时间:2023-11-30 20:30:36 24 4
gpt4 key购买 nike

目前正在练习 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;
}

最佳答案

在代码的这一部分中:

  max = 0;
while((len = getLine(line, MAXLINE)) > 0) {
if(len > max) {
len = max;
copy(longest, line);
}

max 开头为 0。在 if 条件中,您将 len 指定为 max,即 0。还有另一个问题,程序将在 while 第一次迭代后返回 0,因为你将 return 0 放入其中。

关于C - 输出终端输入的最长行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53813532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com