gpt4 book ai didi

文件长度的计算不起作用

转载 作者:太空狗 更新时间:2023-10-29 15:26:38 24 4
gpt4 key购买 nike

#include "stdio.h"
#include "stdlib.h"
int main()
{
FILE *fp;
int noOfLines =0;
char fname[]="Rtl_Prod_Id.txt";
printf(fname);
fp=fopen(fname,"r");
char ch;

//looping for every line
do {
ch=fgetc(fp);
if (ch=='\n')
noOfLines++;
} while(ch!=EOF);

//line before the last line
if (ch!='\n'&&noOfLines!=0)
noOfLines++;
fclose(fp);
printf("%d",noOfLines);
return 0;
}

我只是想计算文件中的行数。 Same 不会返回任何结果。

我正在做的可能的错误是什么

环境:AIX 和编译器:CC

谢谢

编辑:我的程序编译成功,但在执行 .Out 文件时它没有显示任何内容

P.S:虽然我得到了答案。感谢https://stackoverflow.com/users/434551/r-sahu .我已将 char ch; 更改为 int ch; 。但我不知道为什么? char 声明有什么问题? .当我要检查 '\n' 和 EOF 字符时,为什么要检查整数?

最佳答案

问题是 AIX 上的 char 实际上是 unsigned char

fgetc() 返回一个 int 值,-1(通常)用于表示 EOF。但是,因为 unsigned char 不能为负数(EOF 变为 255),所以比较 ch != EOF 将始终为 true,这会导致死循环。

定义 int ch; 解决了这个问题;顺便说一句,如果您使用 -Wall(显示所有编译器警告),这应该在编译期间显示出来。

关于文件长度的计算不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23211239/

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