Как найти фактическую ошибку fprintf ()? - PullRequest
3 голосов
/ 20 апреля 2011

В моей программе fprintf() возвращает -1, что указывает на ошибку.Как я могу узнать, какая именно ошибка была?

Ответы [ 2 ]

10 голосов
/ 20 апреля 2011
#include <errno.h>
#include <string.h>

...
rc = fprintf(...)
if (rc < 0) 
    printf("errno=%d, err_msg=\"%s\"\n", errno,strerror(errno))
4 голосов
/ 20 апреля 2011

Вам необходимо проверить значение errno.Большинство библиотечных функций устанавливают для него определенный код ошибки, и вы можете найти его в errno.h или использовать perror или strerror, чтобы получить читаемую пользователем версию.

Например:

#include <stdio.h>
#include <string.h>
#include <errno.h>
int main (void) {
    FILE *fh = fopen ("junk", "w");
    if (fh != NULL) {
        if (fprintf (fh, "%s", "hello") < 0)
            fprintf (stderr, "err=%d: %s\n", errno, strerror (errno));
        fclose (fh);
    }
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...