getc – чтение одного байта из указанного потока данных.
Синтаксис:
#include < stdio.h >
int getc (FILE *stream);
Аргументы:
stream – указатель на поток данных.
Возвращаемое значение:
В случае успешного чтения байта возвращается код считанного байта (символа)
Если достигнут конец файла, то возвращается EOF и устанавливается признак конца файла.
Если при чтении байта произошла ошибка, то возвращается EOF, а переменной errno присваивается код ошибки.
Описание:
Макрос getc считывает один байт из указанного аргументом stream потока данных.
Если достигнут конец файла или при чтении файла произошла ошибка возвращается код EOF (обычно -1). Для того, чтобы отличить конец файла от ошибки используются функции feof и ferror.
Макрос getc аналогичен функции fgetc.
Пример:
В примере из заранее созданного файла test.txt, располагающегося в одной папке с программой, считываются данные с помощью макроса getc пока не будет достигнут конец файла. В файле заранее сохранена строка: «тест чтения». Считанные данные и отчет о работе выводятся на консоль
#include < stdio.h > //Для printf, getc, fopen, fclose, feof
int main (void)
{
// Переменная, в которую будет помещен указатель
// на созданный поток данных
FILE *mf;
// Переменная, в которую поочередно будут помещаться считываемые байты
int sym;
// Открытие файла с режимом доступа «только чтение»
// и привязка к нему потока данных
printf (“Открытие файла: ”);
mf = fopen (“test.txt”,”r”);
// Проверка открытия файла
if (mf == NULL) {printf (“ошибка\n”); return -1;}
else printf (“выполнено\n”);
printf (“Коды считанных символов:\n”);
// Чтение (побайтно) данных из файла в бесконечном цикле
while (1)
{
// Чтение одного байта из файла
sym = getc (mf);
// Проверка на конец файла или ошибку чтения
if (sym == EOF)
{
// Проверяем что именно произошло: кончился файл
// или это ошибка чтения
if (feof (mf) != 0)
{
// Если файл закончился, выводим сообщение о завершении
// чтения и выходим из бесконечного цикла
printf (“\nЧтение файла закончено\n”);
break;
}
else
{
// Если при чтении произошла ошибка, выводим сообщение
// об ошибке и выходим из бесконечного цикла
printf (“\nОшибка чтения из файла\n”);
break;
}
}
// Если файл не закончился, и не было ошибки чтения
// выводим код считанного символа на экран
printf (“%d ”,sym);
}
// Закрываем файл
printf (“Закрытие файла: ”);
if ( fclose (mf) = EOF) printf (“ошибка\n”);
else printf (“выполнено\n”);
return 0;
}
| |
Результат:
Открытие файла: выполнено
Коды считанных символов:
212 197 211 212 32 222 212 197 206 201 209
Чтение файла закончено
Закрытие файла: выполнено
|
Смотри так же:
fgetc
fgets
fputc
fputs
getc
getchar
gets
getw
printf
putc
puts
putchar
putw
ungetc
|