[英]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
給出t
或b
,則默認轉換模式由全局變量_fmode
定義。
旁白:你應該檢查fopen
的返回值。 如果為NULL
則無法打開文件。 你也應該fclose
文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.