ВУЗ:
Составители:
Рубрика:
47
{
while((ch = getc(fp)) != EOF)
if(ch == '\r') cnt++;
}
fclose(fp);
printf("Text file: cnt = %d\n",cnt);
cnt=0;
fp = fopen("my_file.txt","rb");
if(fp != NULL)
{
while((ch = getc(fp)) != EOF)
if(ch == '\r') cnt++;
}
fclose(fp);
printf("Binary file: cnt = %d\n",cnt);
return 0;
}
Результат работы будет следующий:
Text file: cnt = 0
Binary file: cnt = 2
Анализ полученных данных показывает, что при открытии файла в
текстовом режиме, символы возврата каретки ‘\r’ не считываются функцией
getc(), а в бинарном режиме доступны все символы.
Еще одной особенностью текстового формата файла является запись чисел
в виде текста. Действительно, когда в предыдущих примерах выполнялась
запись числа
в файл с помощью функции fprintf(), например, года издательства
книги, то число заменялось строкой. А когда она считывалась функцией
fscanf(), то преобразовывалась обратно в число. Если мы хотим компактно
представлять данные в файле, то числа следует хранить как числа, а не как
строки. При этом целесообразно использовать бинарный режим доступа к
файлу,
т.к. будет гарантия, что любое записанное число не будет
восприниматься как управляющий символ и будет корректно считан из файла.
Для работы с бинарными файлами предусмотрены функции fread() и
fwrite() со следующим синтаксисом:
size_t fread( void *buffer, size_t size, size_t count, FILE
*stream );
где *buffer – указатель на буфер памяти, в который будут считываться данные
из файла; size – размер элемента в байтах; count - число считываний элементов;
*stream – указатель на файл.
size_t fwrite( void *buffer, size_t size, size_t count, FILE
*stream );
Страницы
- « первая
- ‹ предыдущая
- …
- 45
- 46
- 47
- 48
- 49
- …
- следующая ›
- последняя »