Не прочитать файл совсей таблицей ascii - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день, пытаюсь записать в массив из файла таблицу ascii, но почему то файл начинает заполняться заново. Кто может сказать, в чем проблема? Если заполнять обычными буквами, то всё нормально. Заранее спасибо.
#include <stdio.h>
#include <stdlib.h>
 
char key[301056];
 
void main(void) {
    FILE *fpp;
    char *p;
    char c;
    int s = 0;
    const char *filename = "key.txt";
    fpp = fopen(filename, "r");
    for (p = key; p - key < 500 - 1 && (c = getc(fpp)) != EOF; p++) {
        *p = c;
    }
}
Когда мы доходим до символа substitute, то все ломается. Можно как нибудь сделать, чтобы этот символ был в массиве, но чтобы массив заполнялся?
http://rgho.st/private/66yZYbGbg/87ec1643bd4337d8082026667448bbf0 вот сам файл. Посмотрите пожалуйста в чем может быть проблема.

Решение задачи: «Не прочитать файл совсей таблицей ascii»

textual
Листинг программы
#include "stdafx.h"
 
#include <stdio.h>
#include <stdlib.h>
 
static char    pKey[400000];
 
int main()
{  
   FILE*    pIn = fopen("key.txt","rb");
 
   for (int ii = 0; ii < 500; ++ii)
   {
      int   iChr = getc(pIn);
 
      if (iChr == EOF)
      {
         break;
      }
 
       pKey[ii] = (char)iChr;
   }
 
   fclose(pIn);
 
   return 0;
}

Объяснение кода листинга программы

Выполняемый файл считывает файл key.txt в двоичном формате, сохраняя каждый символ в массиве pKey. Программа считывает 500 символов из файла. Если достигается конец файла (EOF), цикл прерывается. Функция fclose закрывает файл после его чтения. Вот список действий в коде:

  1. Включающие директивы:
    • include stdafx.h

    • include

    • include

  2. Определение статической переменной:
    • static char pKey[400000];
  3. Основная функция:
    • int main()
  4. Открытие файла:
    • FILE* pIn = fopen(key.txt,rb);
  5. Цикл для чтения файла:
    • for (int ii = 0; ii < 500; ++ii)
  6. Считывание символа из файла:
    • int iChr = getc(pIn);
  7. Проверка на EOF:
    • if (iChr == EOF)
  8. Прерывание цикла при достижении EOF:
    • break;
  9. Запись символа в массив:
    • pKey[ii] = (char)iChr;
  10. Закрытие файла:
    • fclose(pIn);
  11. Возврат 0:
    • return 0; В этом коде нет никаких математических операций или сложных структур управления. Это простой считыватель файлов, который читает двоичные данные из файла и сохраняет их в массиве.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5