求解答,关于xocde打开文件后读取文件中字符个数的程序 40C

图片说明
图片说明

#include <stdio.h>
#include<stdlib.h>

void main(void)
{

int ch;
FILE *fp;
unsigned long count=0;
char filename[50];

printf("enter the file name\n");

while((scanf("%s",filename))!=1)
{
    printf("usage:%s filename\n",filename);
    exit(EXIT_FAILURE);
}

if((fp=fopen(filename,"r"))==NULL)
{
    printf("can't open %s filename\n",filename);
    exit(EXIT_FAILURE);
}

while((ch=getc(fp)!=EOF))
{
    putc(ch,stdout);
    count++;
}

fclose(fp);
printf("file %s has %lu characters\n",filename,count);

}

我的文件只有一个字符f,为什么显示读了370个字符呢

2个回答

我用你的程序试着打开了多个文本文件,结果都是正确的,你的程序没有什么问题,错误可能出现在你要读取的文件上,如果文件是二进制文件,你用文本编辑器打开时,有可能只看到一个字符,但实际文件并不是一个字节。
我这里没有MAC系统,所以不能还原你的测试,你可以试着将
while((ch=getc(fp)!=EOF))
{
putc(ch,stdout);
count++;
}
改成
while(!feof(fp))
{
ch = getc(fp);
if (ch != -1)
{
putc(ch,stdout);
count++;
}
}

weixin_44180212
carol0216 我用的是mac自带的textedit自己创建的文件,输入了一个f然后就保存了,将其拖拽到debug目录中改变了后缀名为txt,然后就运行了
6 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!