我正在尝试“C编程语言”中的这个旧例子。我在getline
函数中遇到了冲突类型错误。我也试过在main之前放置这个函数。我使用gcc 4.6.3作为我的编译器。
#include <stdio.h>
#define MAXLINE 1000
int getline(char line[], int maxline);
void copy(char to[], char from[]);
int main(void)
{
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);
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;
}
答案 0 :(得分:10)
getline
现在是standard POSIX function,其签名与此K&amp; R示例中的函数不同。将getline
重命名为其他内容,它应该有效。
或者,使用gcc -std=c89
(或-std=c99
)进行编译,以获得没有POSIX或GNU扩展的纯ISO C模式。
答案 1 :(得分:7)
您的getline
功能与标准库提供的getline冲突。最好重命名您的功能。