簡體   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