【发布时间】:2021-09-21 16:43:04
【问题描述】:
我记得听说在同一代码块中使用 printf() 和 fprintf() 函数是一种不好的做法。
fprintf(stdout, "The first line,\n");
printf("The second line,\n");
或者简单地说,
fprintf(somefile, "Its a file");
printf("Some text");
因此,我始终使用fprintf() 和fgets() 进行输入和输出。是不是我的错觉?
【问题讨论】:
-
对与错取决于更大的代码上下文。这可能是一种薄弱的做法,但也存在例外情况。
-
我想最好不要将
fprintf和printf混合用于标准输出,因为它会妨碍可读性,请选择其中一个。您还可以通过安全检查和“更好”的 unicode 支持检查新的 C11printf_s和fprintf_s。 -
这是我在 39 年的 C 编程生涯中第一次听到有人认为这是不好的做法。我并不是说没有人认为这是不好的做法,但他们必须提供一个很好的理由。
-
第一个和第二个代码sn-ps完全不同。第一个有点毫无意义,只需使用
printf(x)而不是fprintf(stdout, x);,两者都做同样的事情。在第二个代码 sn-p 中,您将"Its a file"打印到文件中,然后将"Some text"打印到标准输出,这没有任何问题。 -
@Zilog80:注意
printf_s和朋友是 C11 的可选部分,AFAIK 选择采用它们的唯一主要实现是 MSVC。因此,使用这些“标准”功能将严重限制可移植性。
标签: c file conventions