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