从在C文件中读取ASCII字符

问题描述 投票:1回答:1

我在打印前128个ASCII字符的文件,然后试图读取这些字符打印的ASCII十进制值。

我试着用FREAD()和fscanf()函数的功能,但二者终止阅读前25个字符之后。

#include <stdio.h>
int main()
{
    int i;
    char ch;
    FILE *fp;
    fp=fopen("a.txt","w+");
    for(i=0;i<128;i++)
    {
        fprintf(fp,"%c",i);
    }
    fseek(fp,0,SEEK_SET);
    while(fread(&ch, sizeof(char), 1, fp))
        printf("%d\n",ch);
    return 0;
}

我希望输出成为第128个ASCII字符的十进制值,但实际产量只有第一次25个ASCII字符十进制值。

c ascii
1个回答
3
投票

当你达到26系统处理该值作为最终的文件标记。所有128个字节都被写入,但是,阅读它停在值0x1A(26)。此行为是一个文本文件(Windows)。

我打开二进制模式下的文件,它的工作。

fp = fopen("a.txt", "wb+");

如果tbmode给出,默认的转换模式由全局变量_fmode定义。

另外:你应该检查从fopen的返回值。如果是NULL文件无法打开。你应该fclose过的文件。

© www.soinside.com 2019 - 2024. All rights reserved.