从fgets()的返回值赋值

0 c pointers fgets

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

我收到"错误:从类型'char*'"分配类型'char [101]'时出现不兼容的类型,

那么,为什么变量'line'被认为是'char [101]'而不是'char*'?

char line[101] = "";

while (feof(filePtr) == 0){
    line = fgets(line, 101, filePtr);
    strcpy(strPtr, line);
}
Run Code Online (Sandbox Code Playgroud)

Sou*_*osh 5

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

为什么变量line被认为是类型char[101]而不是类型char *

在你的情况下,line认为是类型的char [101],它真的.在某些情况下,数组会向下衰减到指向数组中第一个元素的指针,但这并不会改变数组变量本身属于数组类型的事实.

那就是说,你过度了.您不需要在那里存储返回值.您可以检查它NULL并完成.无论如何都fgets()将扫描值存储在line数组中.这首先是传球line(以及它的大小).

那就说,请看为什么"while(!feof(file))"总是错的?