huayuett 2021-05-08 10:25 采纳率: 100%
浏览 42
已采纳

在linux中,如何用c语言将error message redirect到一个txt文件中

在linux中,我想用C语言将err_ret("can't read directory %s", pathname)输出的error message 重新定义到一个txt文件中

我尝试使用fopen建立新的txt 文件然后直接输入,但是并不行。

同时在进行gcc的时候会提示 error: invalid use of void expression
   fprintf(fp, err_ret("can't read directory %s", pathname));

请问该如何修改。谢谢

【注,不是在shell中用>>进行redirect】

static int
myfunc(const char *pathname, const struct stat *statptr, int type)
{
	FILE *fp = fopen("task14error.txt","w");
  switch (type) {
	case FTW_F:
		switch (statptr->st_mode & S_IFMT) {
		case S_IFREG:	nreg++;		break;
		case S_IFBLK:	nblk++;		break;
		case S_IFCHR:	nchr++;		break;
		case S_IFIFO:	nfifo++;	break;
		case S_IFLNK:	nslink++;	break;
		case S_IFSOCK:	nsock++;	break;
		case S_IFDIR:	/* directories should have type = FTW_D */
			err_dump("for S_IFDIR for %s", pathname);
		}
		break;
	case FTW_D:
		ndir++;
		break;
	case FTW_DNR:
    ndnr++;
		fprintf(fp, err_ret("can't read directory %s", pathname));
		break;
	case FTW_NS:
		err_ret("stat error for %s", pathname);
		break;
	default:
		err_dump("unknown type %d for pathname %s", type, pathname);
	}
  fclose(fp);
	return(0);
}
  • 写回答

4条回答 默认 最新

  • adgentleman 2021-05-08 10:54
    关注

    这个err_ret的是没有返回值(void)的是吗?可以将err_ret中打印的字符串的返回,然后再用fprintf打印到文件中。

    ```c

    fprintf(fp,"%s",err_ret());

    ```

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog