gpt4 book ai didi

c - 为什么我会收到此错误 : Conflicting types for getline

转载 作者:行者123 更新时间:2023-12-02 06:53:28 29 4
gpt4 key购买 nike

有人可以看看这个并告诉我出了什么问题。我有 3 个错误:

  1. 错误:getline 的类型冲突
  2. 错误:函数调用的参数太少,预计 3 个有 2 个
  3. 错误:getline 的类型冲突

我确定我忽略了一些简单的事情,但我找不到我的错误。谢谢,代码如下:

#include <stdio.h>

#define MAXLINE 1000

int getline(char line[], int maxline); /* conflicting types for getline */
void copy(char to[], char from[]);

main() {
int len;
int max;
char line[MAXLINE];
char longest[MAXLINE];

max = 0;

while ((len = getline(line, MAXLINE)) > 0) /* too few arguments to call, expected 3 have 2 */
if (len > max) {
max = len;
copy(longest, line);
}

if (max > 0)
//printf("longest line = %d characters\n -->", max);
printf("%s", longest);

return 0;
}

int getline(char s[], int lim) { /*conflicting types for getline*/

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;
}
}

最佳答案

简单的答案:不要调用你的函数getline。该名称已被占用。

(我知道,这是 K&R 中的一个示例。所以你应该可以使用它,对吧?不幸的是,不能。我也很烦。)

稍微长一点的答案:现在有一个半标准的 getline 函数,你的函数与之冲突。如果您尝试将自己的函数之一命名为 printf,您将遇到相同类型的错误。可能有一种说法,“我不想使用标准的 getline 函数,我想使用自己的”,但在这种情况下,它可能不值得。

(就个人而言:我已经用 C 编程了大约 35 年,其中大约 34.9 年我一直在使用自己的 getline 函数,自从我读到它在 K&R 中。但是在过去一年左右的时间里,我不得不重写我所有的程序,调用我自己的函数 fgetline 而不是 getline,以绕过这个问题。)

关于c - 为什么我会收到此错误 : Conflicting types for getline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37121254/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com