【发布时间】:2017-08-13 06:29:21
【问题描述】:
在我的一个大学项目中,我得到了扣分和教授的反馈,说我没有处理 printf 错误。
英文 --> / * ### FB: Error handling printf () is missing * /
/* ### FB: Fehlerbehandlung printf() fehlt */
printf("%7lu %8lld %10s %3lu %-8s %-8s %8lu %12s %s %s %s\n",
sb->st_ino, nblks, permstr, (unsigned long) sb->st_nlink,
username, groupname, sb->st_size,
ntime, filename, (symlink ? "->" : ""),
(symlink ? symlink : "")
);
我的问题是,总是检查printf 函数的返回值并处理错误真的很重要吗?即使我发现错误,我仍然会使用fprintf 打印到stderr,为此我必须再次检查fprintf 的返回类型。
那么应该什么时候检查返回值,应该如何处理呢?
【问题讨论】:
-
总是检查
scanf,但我承认从不检查printf。 -
@SeekAddo:我猜你的教授可能没有任何专业编写 C 的经验,所以他对错误检查的看法可能只是理论/迂腐。
-
@SeekAddo,正如我所说,这取决于您将如何处理此类错误。更有可能的是,如果您处于完全需要检查的情况,那么处理将包括终止发生错误的线程或进程。就个人而言,我会在此之前向
stderr发送消息,但that 是绝对没有意义检查返回值(fprintf()/fputs())的情况。跨度> -
我不同意这是基于意见的。很明显,检查 printf 的结果并没有给你任何有意义的行动。唯一基于意见的是您是否应该坚持检查它,以保持一致的编码风格或避免警告。但这不是这里的问题。投票重新开放。