Проверьте, пустой ли stderr - PullRequest
1 голос
/ 09 марта 2012

Я пишу строку в stderr fprintf (strderr, формат strimg, строка) и позже из другой функции мне нужно проверить, было ли что-то записано в stderr.

В связи с этим, можно ли просто проверить, пустой ли stderr? Или, может быть, Ferror (Stderr) добьется цели?

Ответы [ 3 ]

1 голос
/ 09 марта 2012

Вероятно, лучше использовать логический флаг, чтобы отслеживать, была ли выдана ошибка или нет - инициализируйте ее как false и устанавливайте в true каждый раз, когда вы пишете в stderr.Тогда проверь что ...

0 голосов
/ 09 марта 2012

Если у вас есть шанс, наберите

#include <stdio.h>
#include <stdarg.h>
char errprintf_called = 0;
int errprintf(const char * fmt, ...)
{
    errprintf_called = 1;
    va_list ap;
    va_start(ap, fmt);
    int ret = vfprintf(stderr, ap);
    va_end(ap);
    return ret;
}

и используйте

errprintf("Error %d has occured!", 42);
if (errprintf_called) {
    whine();
} else {
    laugh();
}
0 голосов
/ 09 марта 2012

взгляните на это

в комментариях тоже есть что-то о EOF. может быть именно то, что вы ищете?

...