我何时应该使用fput而不是fprintf?

wes*_*bos 36 c

这两者究竟有什么区别?

Sad*_*que 31

fprintf格式化输出.也就是说,它读取并解释您提供的格式字符串,并将结果写入输出流.

fputs只是将您提供的字符串写入指示的输出流.

fputs()不必解析输入字符串以确定您要做的就是打印字符串.fprintf()允许您在输出时格式化.

  • 我可能是错的,但如果你想打印由用户控制的字符串,fputs 更安全。StackOverflow 上有很多帖子讨论这一点。 (4认同)

leo*_*loy 12

正如其他评论者所指出的那样(并且从文档中可以明显看出),最大的区别在于printf允许参数的格式化.

也许您在询问函数是否相等而没有传递其他参数printf()?好吧,他们不是.

   char * str;
   FILE * stream;
   ...
   fputs(str,stream);    // this is NOT the same as the following line
   fprintf(stream,str);  // this is probably wrong
Run Code Online (Sandbox Code Playgroud)

第二个可能是错误的,因为字符串参数fprintf()仍然是一个格式化字符串:如果它具有'%'字符,它将被解释为格式化说明符.

功能相当(但不那么直接/有效/好)的形式

   fprintf(stream,"%s", str);  
Run Code Online (Sandbox Code Playgroud)


sle*_*ica 5

嗯...... puts()只是写一个字符串,同时printf()为几种类型的数据提供了许多格式化工具.

fputs() http://www.cplusplus.com/reference/clibrary/cstdio/fputs/

fprintf() http://www.cplusplus.com/reference/clibrary/cstdio/fprintf/

文档很有用!学习阅读它,你将拥有一个强大的工具.

  • `puts` /`printf`与`fputs` /`fprintf`不完全相关.与任何其他函数不同,`puts`在其输出中附加一个`'\n'`. (11认同)