gpt4 book ai didi

c - 从不兼容的指针类型传递 getline() 的参数

转载 作者:行者123 更新时间:2023-11-30 18:13:24 24 4
gpt4 key购买 nike

我知道以下警告是我的错,但我需要一些帮助来解决我做错了什么。我得到:“从不兼容的指针类型传递‘getline’的参数 1”,参数 2 也是如此。

这是我对 getline() 的调用:

getline(&line.buf, &maxSz, stdin)

以下是相关参数声明:

line_t line;
int maxSz = 1000;

typedef struct line_t {
char buf[1000];
int lineLength;
int wordCount;
int index;
} line_t;

我认为问题在于我正在获取本应成为指针的地址,但在测试了对 getline 的几个不同调用后,我尚未找到解决方案。我绝对认为参数 2 是 maxSz 不是指针这一事实。

while (-1 != (line.lineLength = getline((char**) &line.buf, &maxSz, stdin))) {
printf("buf is %s\n",line.buf);

为什么上面给我一个无限循环?

最佳答案

关于第二个参数的问题:您传递给的 getline()&maxSz 类型为 int * 但函数 getline () 需要 size_t * 类型的第二个参数。更改声明

int maxSz = 1000;

size_t maxSz = 1000;

关于第一个参数:我建议您将char buf[1000];替换为char * buf;。当您不知道行的长度时,这是更好的读取行的方法。但不要忘记初始化它(即在调用 getline() 之前添加 buf = 0;)。如果您阅读 getline() 函数的描述,您会发现第二个参数没有输入。您的 maxSz 不限制字符串的最大长度(在此变量中,您可以找到读取的字符数,包括分隔符,但不包括终止空字节('\0'))。尝试编译分析typical example .

关于c - 从不兼容的指针类型传递 getline() 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25986465/

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