gpt4 book ai didi

c - 从 fgets() 的返回值赋值

转载 作者:太空宇宙 更新时间:2023-11-04 05:12:08 25 4
gpt4 key购买 nike

我的理解是 fgets() 返回输入的字符串参数,但是,

我收到“错误:从类型‘char *’分配给类型‘char[101]’时类型不兼容”,

那么,为什么变量“line”被认为是类型“char[101]”而不是类型“char *”?

char line[101] = "";

while (feof(filePtr) == 0){
line = fgets(line, 101, filePtr);
strcpy(strPtr, line);
}

最佳答案

长话短说:您不能赋值给一个数组,它不是一个可修改的左值。您需要定义另一个指针来保存返回值。

why is the variable line considered type char[101] and not type char *

在您的情况下,line被认为char [101] 类型,它的确。 In some of the cases ,数组衰减为指向数组中第一个元素的指针,但这并没有改变数组变量本身是数组类型的事实。

也就是说,你做得太过分了。您不需要将返回值存储在那里。您可以根据 NULL 检查它并完成。 fgets() 无论如何都会将扫描值存储在 line 数组中。这就是首先传递 line(及其大小)的全部意义。

也就是说,请参阅 Why is “while ( !feof (file) )” always wrong?

关于c - 从 fgets() 的返回值赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42598339/

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