CodeNet / Языки программирования / C / C++ / Linux/Unix / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
strerror
STRERROR #include <string.h> требуется только для объявления функции char *strerror(string); char *string; сообщение, поставляемое пользователем int errno; счетчик ошибок int sys_nerr; счетчик сообщений системы char sys_errlist[sys_nerr]; массив сообщений об ошибках Описание. Если string равна NULL, функция strerror возвращает указа- тель на строку, содержащую системное сообщение об ошибке для пос- леднего библиотечного вызова, в котором выработана ошибка; эта строка оканчивается символом новой строки ('\n'). Если string не равна NULL, strerror возвращает указатель на строку, содержащую сообщение об ошибке, поставляемое пользовате- лем; двоеточие; пробел; системное сообщение об ошибке для послед- него библиотечного вызова, выработавшего ошибку; и символ новой строки ('\n'). Сообщение пользователя может иметь максимальную дли- ну до 94 байта. В отличии от perror, strerror не печатает никаких сообще- ний. Для печати сообщения, возращаемого strerror в stderr, в программе должен быть оператор printf, например: if((access("datafile",2))++-1) printf(strerror(NULL)); Номер ошибки хранится в переменной errno, которая объявлена на внешнем уровне. Системные сообщения об ошибках доступны через переменную sys_errlist, которая является массивом сообщений для ошибок из счетчика ошибок. По функции strerror посредством ис- пользования значения errno как индекса к sys_errlist можно уста- новить приблизительные сообщения об ошибках. Значение переменной sys_nerr определяется как максимальное число элементов в массиве sys_errlist. Чтобы выработать правильный результат, функция strerror должна быть вызвана сразу после библиотечной процедуры, возвраща- ющей ошибку. Иначе значение errno может быть перезаписано для последующих вызовов. Возвращаемое значение. Функция strerror не возвращает никакого значения. См. также clearerr, ferror, perror. Замечание. В MS DOS некоторые значения errno, приведенные в <errno.h>, не используются. См. приложение А "Сообщения об ошиб- ках", где приведен список значений errno и соответствующие сооб- щения об ошибках, которые применяются в MS DOS . Для любого зна- чения errno, не используемого в MS DOS, функция strerror печатает пустую строку. Пример. #include <fcntl.h> #include <sys\types.h> #include <sys\stat.h> #include <io.h> #include <stdlib.h> int fh1, fh2; fh1 = open("data1", O_RDONLY); if (fh1==-1) strerror("open failed on input file"); fh2 = open("data2", O_WRONLY : O_CREAT, S_IREAD : S_IWRITE); if (fh2==-1) srterror("open failed on output file");