Рубрики

get () рискованно использовать!

Рассмотрим программу ниже.

void read()

{

   char str[20];

   gets(str);

   printf("%s", str);

   return;

}

Код выглядит простым, он читает строку из стандартного ввода и печатает введенную строку, но страдает от переполнения буфера, так как gets () не выполняет никакого тестирования с привязкой к массиву. get () продолжает чтение, пока не увидит символ новой строки.

Чтобы избежать переполнения буфера, вместо get () следует использовать fgets (), так как fgets () обеспечивает чтение не более MAX_LIMIT символов.

#define MAX_LIMIT 20

void read()

{

   char str[MAX_LIMIT];

   fgets(str, MAX_LIMIT, stdin);

   printf("%s", str);

  

   getchar();

   return;

}

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное в приведенной выше статье, или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

get () рискованно использовать!

0.00 (0%) 0 votes