Не прочитать файл совсей таблицей 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 закрывает файл после его чтения.
Вот список действий в коде:
- Включающие директивы:
-
include
stdafx.h -
include
-
include
-
- Определение статической переменной:
- static char pKey[400000];
- Основная функция:
- int main()
- Открытие файла:
- FILE* pIn = fopen(
key.txt,rb);
- FILE* pIn = fopen(
- Цикл для чтения файла:
- for (int ii = 0; ii < 500; ++ii)
- Считывание символа из файла:
- int iChr = getc(pIn);
- Проверка на EOF:
- if (iChr == EOF)
- Прерывание цикла при достижении EOF:
- break;
- Запись символа в массив:
- pKey[ii] = (char)iChr;
- Закрытие файла:
- fclose(pIn);
- Возврат 0:
- return 0; В этом коде нет никаких математических операций или сложных структур управления. Это простой считыватель файлов, который читает двоичные данные из файла и сохраняет их в массиве.