Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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
int到char赋值中的不兼容类型_C - Fatal编程技术网

int到char赋值中的不兼容类型

int到char赋值中的不兼容类型,c,C,大家好,我正在尝试计算文件中的行数,但似乎fgetc(file)返回int,并且无法转换为字符。帮帮我,我做错了什么?在你的代码中ch不是char,它是char[20]——一个由20个字符组成的数组。您不能将fgetc的结果分配给它,因为fgetc返回一个int(它包含一个char或EOF标记) 将ch的声明更改为int ch,以解决此问题。您也可以放弃对feof的调用,因为它发生在错误的时间(您在读取操作之后调用它,而不是在读取操作之前) 不要使用feof()来控制循环的终止;直到你读不懂一个

大家好,我正在尝试计算文件中的行数,但似乎
fgetc(file)
返回
int
,并且无法转换为字符。帮帮我,我做错了什么?

在你的代码中
ch
不是
char
,它是
char[20]
——一个由20个字符组成的数组。您不能将
fgetc
的结果分配给它,因为
fgetc
返回一个
int
(它包含一个
char
EOF
标记)

ch
的声明更改为
int ch
,以解决此问题。您也可以放弃对
feof
的调用,因为它发生在错误的时间(您在读取操作之后调用它,而不是在读取操作之前)

不要使用
feof()
来控制循环的终止;直到你读不懂一个字符后,它才会变成真的。每个输入函数返回一个结果,告诉您它是否能够读取任何内容;使用它来决定循环何时完成。
void trinti1()
{
    int b,lines;
    char ch[20];

    FILE* file = fopen ("Kordinates.txt", "r");

    while(!feof(file))
    {
        ch = fgetc(file);
        if(ch == '\n')
        {
            lines++;
        }
    }

    fclose(file);
}
for (;;) {
    int ch = fgetc(file);
    if (ch == EOF) break;
    if (ch == '\n') lines++;
}
void trinti1()
{
    int b,lines=0;
    int ch;

    FILE* file = fopen ("Kordinates.txt", "r");

    while(EOF!=(ch=fgetc(file)))
    {
        if(ch == '\n')
        {
            ++lines;
        }
    }

    fclose(file);
}