Чтение символов ASCII из файла в C - PullRequest
0 голосов
/ 02 февраля 2019

Я печатаю первые 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.

1 Ответ

0 голосов
/ 02 февраля 2019

Когда вы достигли 26, система восприняла это значение как маркер конца файла.Все 128 байтов были записаны, но при чтении остановились на значении 0x1A (26).Это поведение для текстового файла (Windows).

Я открыл файл в двоичном режиме, и он работал.

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

Если t или b не задано вmode, режим перевода по умолчанию определяется глобальной переменной _fmode.

В сторону: вы должны проверить возвращаемое значение из fopen.Если это NULL, файл не может быть открыт.Вы должны fclose файл тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...