C 在试图查找程序中输入的最长行时,是否解决getline函数中的冲突类型?
我按照一个示例程序创建了一个方法来发现最长的输入行,当我检查getline函数中的参数类型并检查这些行时,我遇到了“getline”函数的一些冲突类型:C 在试图查找程序中输入的最长行时,是否解决getline函数中的冲突类型?,c,C,我按照一个示例程序创建了一个方法来发现最长的输入行,当我检查getline函数中的参数类型并检查这些行时,我遇到了“getline”函数的一些冲突类型: int getline(char line[], int maxline); len = getline(line, MAXLINE) int getline(char s[], int lim){ 来自主程序的代码段的3行显示,在这3行中,line和maxline的类型保持不变。我努力想知道冲突在哪里 变量的声明如下: char lin
int getline(char line[], int maxline);
len = getline(line, MAXLINE)
int getline(char s[], int lim){
来自主程序的代码段的3行显示,在这3行中,line和maxline的类型保持不变。我努力想知道冲突在哪里
变量的声明如下:
char line[MAXLINE];
#define MAXLINE 1000
以下是整个程序的代码:
#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){
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;
}
}
#包括
#定义MAXLINE 1000
int getline(字符行[],int maxline);
无效副本(字符到[],字符从[]);
int main(){
内伦;
int max;
字符行[MAXLINE];
字符最长[MAXLINE];
max=0;
而((len=getline(line,MAXLINE))>0){
如果(长度>最大值){
max=len;
副本(最长,行);
}
}
如果(最大值>0){
printf(“%s”,最长);
}
返回0;
}
int getline(字符s[],int lim){
int c,i;
对于(i=0;i
您面临的问题是因为存在另一个函数,它很可能出现在您的标准库版本中。它会与函数定义产生冲突。它在stdio.h
(包含在您的程序中)中进行原型化,并显示在您正在使用的标准库(默认情况下是链接的)中
最简单的解决方法:为函数使用不同的名称,如
my_getline()
或其他什么。您的getline
函数很可能与同名的GNU C库函数冲突。如果您使用的是gcc,请尝试使用gcc-ansi
进行编译。您可以为语言标准使用其他选项,如-std=c99
或-std=c11
等。