fgetc的用法解决思路

fgetc的用法
大家好,我用fgetc读取一个文本文件里的字符,里面只有4个字符为什么会读出5个呢?下面代码和执行截图,请大家给解答一下。

代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    FILE *fp;
    fp = fopen("E://文本编辑//文件夹//hellow.txt","r");
    if(fp==NULL)exit(0);
    char ch[10]={0};
    int i=0;
    while(!feof(fp))
    {
        ch[i]=fgetc(fp);
        i++;
    }
    int k = strlen(ch);
    printf("%d\n",k);
    printf("%s",ch);
    printf("%c",ch[k-1]);
    printf("%d",ch[k-1]);
    printf("%d",EOF);
    fclose(fp);
    return 0;
}


截图
这是执行情况
fgetc的用法解决思路
这是hellow.txt
fgetc的用法解决思路
------解决方案--------------------
用hex模式看看文件
------解决方案--------------------
引用:
大家好,我用fgetc读取一个文本文件里的字符,里面只有4个字符为什么会读出5个呢?下面代码和执行截图,请大家给解答一下。

代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    FILE *fp;
    fp = fopen("E://文本编辑//文件夹//hellow.txt","r");
    if(fp==NULL)exit(0);
    char ch[10]={0};
    int i=0;
    while(!feof(fp))
    {
        ch[i]=fgetc(fp);
        i++;
    }
    int k = strlen(ch);
    printf("%d\n",k);
    printf("%s",ch);
    printf("%c",ch[k-1]);
    printf("%d",ch[k-1]);
    printf("%d",EOF);
    fclose(fp);
    return 0;
}


截图
这是执行情况
fgetc的用法解决思路
这是hellow.txt
fgetc的用法解决思路

文本文件由个EOF结束符。所以是5个字符。如果是以字符串读出,这个EOF不会读出。
------解决方案--------------------
改成这样。

ch[i]=fgetc(fp);
while(!feof(fp))
{
    i++;
    ch[i]=fgetc(fp);
}

------解决方案--------------------
这个问题就像
char a,b;
a=getchar();
b=getchar();

你在程序中输入一个字母k回车这时候
a=k;
b='回车符'
一个道理