—правочник по C/C++
perror()

#include <stdio.h>
void perror(const char *str);

ќписание

ѕреобразует значение глобальной переменной errno в строку и записывает эту строку в поток ошибок stderr

‘ункци€ perror() преобразует значение глобальной переменной errno в строку и записывает эту строку в поток ошибок stderr. ≈сли значение параметра str не равно нулю, то сначала записываетс€ сама строка, за ней Ч двоеточие, а затем следует сообщение об ошибке, определ€емое конкретной реализацией.


—овет программисту

ѕри использовании функции gets() возможно переполнение массива, предназначенного дл€ размещени€ символов, вводимых пользователем, поскольку эта функци€ не предусматривает никакой проверки факта нарушени€ границ. „тобы обойти эту проблему, можно использовать функцию fgets() и задать в качестве входного потока стандартный поток stdin. ѕоскольку функци€ fget() требует задани€ максимальной длины, можно предотвратить переполнение массива. ¬ам остаетс€ позаботитьс€ лишь о том, чтобы вручную удалить символ новой строки, завершающий ввод, поскольку функци€ fgets() этого не делает (в отличие от функции gets()). –ассмотрим следующую программу.

#include 
#include 
int main(void)
{
	char str [10];
	int i;
	printf("¬ведите строку: ");
	fgets(str, 10, stdin);

/* ”дал€ем символ новой строки, если таковой
существует. */
	i = strlen(str)-1;
	if(str[i]=='\n') str[i] = '\0';
	printf("¬от ваша строка: %s", str);

	return 0;
}

’от€ использование функции fgets() требует приложени€ чуть больших усилий, ее преимущество перед функцией gets() состоит в том, что она позвол€ет защитить массив ввода от переполнени€.







–Э–µ—В –Ї–Њ–Љ–Љ–µ–љ—В–∞—А–Є–µ–≤.



–Ю—Б—В–∞–≤–Є—В—М –Ї–Њ–Љ–Љ–µ–љ—В–∞—А–Є–є:
–Т–∞—И–µ –Ш–Љ—П:
Email:
–Р–љ—В–Є–±–Њ—В: *  
–Т–∞—И –Ї–Њ–Љ–Љ–µ–љ—В–∞—А–Є–є: