Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 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();

}






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных