Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在试图查找程序中输入的最长行时,是否解决getline函数中的冲突类型?_C - Fatal编程技术网

C 在试图查找程序中输入的最长行时,是否解决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

我按照一个示例程序创建了一个方法来发现最长的输入行,当我检查getline函数中的参数类型并检查这些行时,我遇到了“getline”函数的一些冲突类型:

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
等。