fgetc, getc
Определено в заголовке <stdio.h> | ||
|---|---|---|
int fgetc( FILE *stream ); | (1) | |
int getc( FILE *stream ); | (2) |
1) Считывает следующий символ из заданного потока ввода.
2) То же, что и
fgetc, за исключением того, что если getc реализовано как макрос, то оно может вычислять поток более одного раза, поэтому соответствующий аргумент никогда не должен быть выражением со побочными эффектами.Параметры
| stream | - | для чтения символа |
Возвращаемое значение
При успешном выполнении возвращает полученный символ как unsigned char преобразованный в int. При ошибке возвращает EOF.
Если ошибка вызвана концом файла, дополнительно устанавливает индикатор eof (см. feof()) в stream. Если ошибка вызвана другой ошибкой, устанавливает индикатор error (см. ferror()) в stream.
Пример
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
const char* fname = "/tmp/unique_name.txt"; // or tmpnam(NULL);
int is_ok = EXIT_FAILURE;
FILE* fp = fopen(fname, "w+");
if (!fp) {
perror("File opening failed");
return is_ok;
}
fputs("Hello, world!\n", fp);
rewind(fp);
int c; // note: int, not char, required to handle EOF
while ((c = fgetc(fp)) != EOF) // standard C I/O file reading loop
putchar(c);
if (ferror(fp))
puts("I/O error when reading");
else if (feof(fp)) {
puts("End of file is reached successfully");
is_ok = EXIT_SUCCESS;
}
fclose(fp);
remove(fname);
return is_ok;
}Возможный вывод:
Hello, world! End of file is reached successfully
Ссылки
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.21.7.1 Функция fgetc (с. 240-241)
- 7.21.7.5 Функция getc (с. 242)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.21.7.1 Функция fgetc (с. 330)
- 7.21.7.5 Функция getc (с. 332)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.19.7.1 Функция fgetc (с. 296)
- 7.19.7.5 Функция getc (с. 297-298)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 4.9.7.1 Функция fgetc
- 4.9.7.5 Функция getc
См. также
считывает символ из stdin (функция) |
|
|
(удалено в C11)(C11) | считывает строку символов из stdin (функция) |
| записывает символ в поток файла (функция) |
|
| возвращает символ в поток файла (функция) |
|
Документация C++ для fgetc, getc |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/io/fgetc