Я скопировал следующий код C из K & R. Код должен печатать строку, если это самая длинная строка, набранная пользователем.
Это код:
#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;
}
Проблема в том, что он не работает. Запустив код, я могу набирать строки в консоли, но она не печатает самую длинную строку. Буду признателен за любую помощь.
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
Я использую Win7 с компилятором Open Watcom.
Консоль не складывается, она позволяет вводить символы.
Кроме того, я не уверен, что застрял в цикле, потому что если я изменю свой цикл while в main () на
while((len = getline()) > 0)
if (len > max){
printf("IT WORKS");
max = len;
copy();
}
с командой печати, если длина строки превышает текущую максимальную длину, то «IT WORKS» выводится на экран. Так что он определенно считает длину строки.