Сразу рассмотрим пример её использования.
Листинг 14.8
#include <stdio.h>
int main(){
char str[10];
fgets(str,10,stdin);
printf("%s\n",str);
return(0);
}
Функция принимает три аргумента.
Массив символов, в который необходимо записать вводимую строку.
Количество символов, которые может считать функция с учетом символа конца строки. В нашем случае это 10, т.е. рабочих из них девять, и один зарезервирован для конца строки.
Откуда читать данные. В нашем случае указан стандартный поток ввода.
Попробуем в нашей программе Листинг 14.8 ввести нашу строку Helloworld. В ней 12 символов.
Результат выполнения.
|
| Рис.7. Ввод с помощью функции fgets().
|
Как видите, даже если мы введем больше, то функция считает только определенное ей количество символов. Не больше.
Есть еще одно отличие. Функция gets() глотала наш перенос строки, превращая его в символ конца строки. А вот функция fgets() его не «проглатывает». Введем, какую-нибудь строку меньше 10 символов. И посмотрим что будет.
|
| Рис.8. Иллюстрация особенностей ввода функции fgets().
|
Как видите, получилось два переноса строки. Один из самой строки, другой из-за формат строки вывода.
С вводом разобрались. Теперь поколдуем над выводом. Кроме стандартного printf() есть еще несколько функций. По аналогии с функциями ввода.