Производит чтение строки из файла или клавиатуры. Чтение идет до конца строки либо файла. Функция fgets() обеспечивает безопасное чтение из стандартного потока, вместо небезопасных scanf() или gets().
#include <stdio.h>
char * fgets( char * string, int num, FILE * filestream );
string - указатель на буфер в который будет записана считанная строка
num - максимальная длина записанной строки (включая завершающий нулевой символ)
filestream - указатель на FILE с которого будет чтение, если это стандартный поток (ввод с клавиатуры) - то нужно использовать ключевое слово stdin
Возвращаемое значение - при ошибке NULL
Пример чтения строки вводимой с клавиатуры
#include <stdio.h> //printf(), fgets()
int main(){
const int STR_SIZE = 100; // Максимальная длина строки
char str[STR_SIZE]; // Целочисленная переменная
char ret_str[STR_SIZE]; // Целочисленная переменная
printf("Enter string \n"); // Приглашение к вводу числа
fgets(str, STR_SIZE, stdin); // Ввод строки (для чтения из стандартного потока используем идентификатор stdin)
printf("%s %p\n", str, &str); // Вывод введенной строки
printf("%s %p\n", ret_str, &ret_str); // Вывод возвращенной строки
}
Пример чтения строки из файла. Не заработало с флагами w и a в fopen()
#include <stdio.h> // printf(), fprintf(), fopen(), fclose()
int main(){
FILE *fp = fopen("1.txt", "r"); // Открываем файл 1.txt для чтения (рядом с исполняемым файлом)
if(fp == NULL){ // Проверяем что файл открылся
printf("File not open! \n");
}else{
char buf[40] = {0}; // Создаем буфер для записи и заполняем нулями
fgets(buf, 7, fp); // Читаем строку из файла с ограничением длины до 7 символов
printf("buf = %s \n", buf); // "buf = Hi Vic" в файле была строка Hi Victor!!!
fclose(fp); // Закрываем файл
}
}