0 c console-application getchar
我从K&R复制了以下C代码.如果代码当前是用户键入的最长行,则该代码应该打印一行.这是代码:
#include <stdio.h>
#define MAXLINE 1000
int max;
char line[MAXLINE];
char longest[MAXLINE];
int getline();
void copy();
int main(){
int len=0;
extern int max;
extern char longest[];
max = 0;
while((len = getline()) > 0)
if (len > max){
max = len;
copy();
}
if (max > 0){
printf("%s", longest);
}
return 0;
}
int getline(){
int c;
int i;
extern char line[];
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(){
int i;
extern char line[];
extern char longest[];
i=0;
while((longest[i]=line[i])!='\0')
++i;
}
Run Code Online (Sandbox Code Playgroud)
问题是它似乎不起作用.运行代码,我可以在控制台中键入行,但它不会打印最长的行.我将不胜感激任何帮助.
额外信息:I7m使用Win7和Open Watcom编译器.控制台没有折叠,它让我输入字符.另外,我不确定我是否陷入循环,因为如果我将main()中的while循环更改为
while((len = getline()) > 0)
if (len > max){
printf("IT WORKS");
max = len;
copy();
}
Run Code Online (Sandbox Code Playgroud)
如果行的长度超过当前的最大长度,则使用打印命令,然后在屏幕上打印"IT WORKS".所以它肯定是在计算线长.