繁体   English   中英

从C中的文件中读取ASCII字符

[英]Reading ASCII characters from a file in C

我正在打印文件中的前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字符的十进制值。

当您达到26 ,系统将该值视为文件结束标记。 写入了所有128个字节,但在读取时它停止在值0x1A (26)。 此行为适用于文本文件(Windows)。

我以二进制模式打开文件,它工作正常。

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

如果未在mode给出tb ,则默认转换模式由全局变量_fmode定义。

旁白:你应该检查fopen的返回值。 如果为NULL则无法打开文件。 你也应该fclose文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM