Я принимаю как разработчик, у Вас есть определенная степень административного управления над Вашей машиной. Если так, из командной строки, выполняет msconfig.exe. Можно удалить много процессов из ровного запуска, таким образом, избавив от необходимости уничтожить их с вышеупомянутыми решениями.
Для использования получает
безопасно, вы должны точно знать, сколько символов вы будете читать, чтобы вы могли сделать свой буфер достаточно большим. Вы узнаете только то, что точно знаете, какие данные вы будете читать.
Вместо использования gets
, вы хотите использовать fgets
с подписью
char* fgets(char *string, int length, FILE * stream);
( fgets
, если он читает всю строку, оставит '\ n'
в строке, вам придется с этим разобраться.
он был официально удален стандартом 2011 года. Большинство реализаций C по-прежнему поддерживают его, но по крайней мере gcc выдает предупреждение для любого кода, который его использует.
Невозможно удалить функции API без нарушения работы API. Если бы вы могли, многие приложения перестали бы компилироваться или запускаться вообще.
Это причина того, что одна ссылка дает:
Чтение строки, которая выходит за пределы массив, на который указывает s, приводит к неопределенное поведение. Использование fgets () рекомендуется.
Поскольку получает
, не выполняет никаких проверок при получении байтов из stdin и их размещении. Простой пример:
char array1[] = "12345";
char array2[] = "67890";
gets(array1);
Теперь, прежде всего, вам разрешено вводить, сколько символов вы хотите, получает
не заботится об этом. Во-вторых, байты, превышающие размер массива, в который вы их поместили (в данном случае array1
), перезапишут все, что они найдут в памяти, потому что gets
запишет их. В предыдущем примере это означает, что если вы введете "abcdefghijklmnopqrts"
, возможно, непредсказуемо он перезапишет также array2
или что-то еще.
Функция небезопасна, поскольку предполагает согласованный ввод. НИКОГДА НЕ ИСПОЛЬЗУЙТЕ ЕГО!
Недавно я прочитал в сообщении USENET на comp.lang.c
, что gets ()
удаляется из стандарта . УУХУ
Вам будет приятно узнать, что комитет только что проголосовал (единогласно, поскольку оказывается) удалить gets () из также черновик.