求教 C程序设计语言 上一例题
两段程序,同是输入多行字符后,输出字符数最多的那一行,区别只在于第二种方法用到了 extern 全局变量,为什么第一种能够正确输出结果,而第二种却不输出任何结果,苦恼ing。
程序代码:#include <stdio.h>
#include <stdlib.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)
{
max=len;
copy(longest, line);
}
if (max>0)
printf ("%s",longest);
system("PAUSE");
return 0;
}
int getline(char s[], int lim)
{
int c,i;
for (i=0; i<lim-1 && (c=getchar()) != EOF && c!='\n' ; ++i)
s[i]=c;
if (c=='\n')
{
s[i]=c;
++i;
}
s[i]='\0';
return i;
}
void copy (char to[], char from[])
{
int i;
i=0;
while ( (to[i]=from[i])!='\0' )
++i;
}
第二种
程序代码:#include <stdio.h>
#include <conio.h>
#define MAXLINE 1000
int max;
char longest[MAXLINE];
char line[MAXLINE];
int getline(void);
void copy(void);
main()
{
int len;
extern int max;
extern char longest[];
max=0;
while ((len=getline())>0)
if (len>max)
{
max=len;
copy();
}
if (max>0)
printf ("%s",longest);
system("PAUSE");
return 0;
}
int getline(void)
{
int c,i;
extern char line[];
for (i=0;i<MAXLINE-1 && (c=getchar()) != EOF && c!='\n'; ++i)
if (c == '\n')
{
line[i] = c;
++i;
}
line[i]='\0';
return i;
}
void copy(void)
{
int i;
extern char line[],longest[];
i=0;
while ((longest[i]=line[i]) != '\0')
++i;
}






