C-从端子输入输出最长的线

时间:2018-12-17 10:44:54

标签: c

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

1 个答案:

答案 0 :(得分:0)

在代码的这一部分:

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

max0开头。在if条件中,您将len分配为max的{​​{1}}。还有另一个问题,因为您将0放在其中,所以程序在while的第一次迭代后将返回0。