从C中的文件读取ASCII字符

阿尼什

我正在打印文件中的前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+");

如果t还是b没有给出mode,默认的转换模式由全局变量定义_fmode

另外:您应该检查的返回值fopen如果是,NULL则无法打开该文件。您也应该fclose该文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章