我在打印前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
过的文件。