Справочник по 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() состоит в том, что она позволяет защитить массив ввода от переполнения.