⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ferrorf.c

📁 C语言库函数的源代码,是C语言学习参考的好文档。
💻 C
字号:
/* +++Date last modified: 05-Jul-1997 */

/*
**  FERRORF.C - Functions for formatted error messages
*/

/*
**  ferrorf()
**
**  Prints error message with printf() formatting syntax, then a colon,
**  then a message corresponding to the value of errno, then a newline.
**  Output is to filehandle.
**
**  Public Domain by Mark R. Devlin, free usage is permitted.
*/
 
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include "errors.h"
 
int ferrorf(FILE *filehandle, const char *format, ...)
{
      int vfp, fp;
      va_list vargs;
 
      vfp = fp = 0;
      va_start(vargs, format);
      vfp = vfprintf(filehandle, format, vargs);
      va_end(vargs);
      fp = fprintf(filehandle, ": %s\n", sys_errlist[errno]);
      return ((vfp==EOF || fp==EOF) ? EOF : (vfp+fp));
}

/*
**  cant() - An fopen() replacement with error trapping
**
**  Call just as you would fopen(), but make sure your exit functions are
**  registered with atexit().
**
**  public domain by Bob Stout
*/

FILE *cant(char *fname, char *fmode)
{
      FILE *fp;

      if (NULL == (fp = fopen(fname, fmode)))
      {
            ferrorf(stderr, "Can't open %s", fname);
            exit(EXIT_FAILURE);
      }
      return fp;
}

#ifdef TEST

main()
{
      char badname[] = "????????.???";
      FILE *fp;

      fp = cant(badname, "r");
      return 0;
}

#endif /* TEST */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -