将int赋值给char的类型不兼容

时间:2014-05-22 15:57:54

标签: c

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

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

2 个答案:

答案 0 :(得分:2)

在您的代码中ch不是char,而是char[20] - 一个包含20个字符的数组。您无法为其分配fgetc的结果,因为fgetc会返回int(包含单个charEOF标记)。< / p>

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

for (;;) {
    int ch = fgetc(file);
    if (ch == EOF) break;
    if (ch == '\n') lines++;
}

答案 1 :(得分:0)

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