Функция gets

Содержание

#include <stdio.h>
char *gets(char *str);

Функция gets() читает символы из стандартного потока stdin и помещает их в массив символов, адресуемый указателем str. Символы читаются до тех пор, пока не встретится разделитель строк или значение EOF. Вместо разделителя строк в конец строки вставляется нулевой символ, свидетельствующий о ее завершении.

При успешном выполнении функция gets() возвращает указатель str, а при сбое — нулевой указатель. Если произошла ошибка, содержимое массива, адресуемого параметром str, не определено. Поскольку функция gets() возвращает нулевой указатель и при возникновении ошибки, и при достижении конца файла, то для выяснения, что же произошло на самом деле, необходимо использовать функцию feof() или ferror().

Следует учесть, что нет способа ограничить число символов, которое прочитает функция gets(). Это означает, что массив, адресуемый указателем str, может переполниться. Следовательно, данная функция опасна по своей природе. Ее следует использовать только в пробных программах иди утилитах «внутреннего» назначения, т.е. для себя. В коммерческих программах эту функцию использовать не рекомендуется.

Пример


В данной программе функция gets() используется для чтения названия файла.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  FILE *fp;
  char fname[128];

  printf("Введите имя файла: ");
  gets(fname);

  if((fp=fopen(fname, "r"))==NULL) {
    printf("Не удается открыть файл.\n");
    exit(1);
  }

  fclose(fp);

  return 0;
} 

Зависимые функции


fputs() fgetc() fgets() puts()