ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Текстовый и двоичный (бинарный) режим работы файлов
Можно открыть потоки двух режимов: 1 по умолчанию – текстовый 2 если добавить модификаторы, то × t – текстовый × b – двоичный
В текстовом режиме при вводе "\r\n" заменятся на "\n". Здесь "\r" – возврат каретки, "\n" – переход на новую строку. При выводе – обратно: "\n" заменяется на "\r\n". Также при вводе для текстового режима код 0x1A – признак конца файла. В двоичном режиме такого нет.
Стандартные потоки stdin, stdout, stderr работают в текстовом режиме. Остальные в двоичном.
Пример работы с файлом (текстовым, бинарным) #include<conio.h> #include<stdio.h>
typedef struct { int v1; double v2; }TDATA;
void main(void) { FILE *fout, *fin; TDATA data[2], elem; int v1; double v2; char str[200]; clrscr();
// ---------------------------------------------------- // Открываем текстовый файл для записи fout = fopen("out.txt", "w");
// Записываем в файл нужную информацию fprintf(fout, "%d %lf\n", 2, 45.2); fprintf(fout, "%d %lf\n", 34, 72.2);
// Закрываем файл fclose(fout); // ----------------------------------------------------
// Открывем тектовый файл для чтения fin = fopen("out.txt", "r");
// Читаем данные построчно (можно прочитать отдельные данные, например, // используя fscanf while(fgets(str, 200, fin)) printf(str);
// Закрываем файл fclose(fin); // ----------------------------------------------------
// Открываем бинарный файл для записи fout = fopen("out.bin", "wb"); v1 = 2; v2 = 45.2; // Записываем данные fwrite(&v1, sizeof(int), 1, fout); fwrite(&v2, sizeof(double), 1, fout); v1 = 34; v2 = 72.2; // Еще записываем данные fwrite(&v1, sizeof(int), 1, fout); fwrite(&v2, sizeof(double), 1, fout);
// Закрываем файл fclose(fout); // ----------------------------------------------------
// Открываем бинарный файл для чтения fin = fopen("out.bin", "rb"); while(1) { // Последовательно читаем данные fread(&v1, sizeof(int), 1, fin); // Постоянно проверяем признак конца файла if (feof(fin)) break; fread(&v2, sizeof(double), 1, fin); if (feof(fin)) break; printf("%d %lf\n", v1, v2); } // Закрываем файл fclose(fin); // ----------------------------------------------------
// Запишем тоже самое, но используя массив структур // Открываем бинарный файл для записи fout = fopen("out2.bin", "wb"); data[0].v1 = 2; data[0].v2 = 45.2; data[1].v1 = 34; data[1].v2 = 72.2;
// Записываем весь массив структур fwrite(data, sizeof(TDATA), 2, fout);
// Закрываем файл fclose(fout); // ----------------------------------------------------
// Читаем данные по одному элементу fin = fopen("out2.bin", "rb"); while(fread(&elem, sizeof(TDATA), 1, fin)) printf("%d %lf\n", elem.v1, elem.v2); fclose(fin); // ----------------------------------------------------
getch(); } Не нашли, что искали? Воспользуйтесь поиском:
|