讨论一下printf和fprintf两个函数

avalonBBS 2004-12-30 12:16:52
int printf(const char *format,...)
int fprintf(FILE *fp, char *format,…)

记得以前看段别人写的程序,印象中的好像是socket的。
中间有许多输出的地方明明可以用printf的,可是那儿全都是用了fprintf函数。

请问这是基于什么原因啊?这中间有什么猫泥吗? :-)
...全文
368 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodluckyxl 2005-01-13
  • 打赏
  • 举报
回复
....
pacman2000 2004-12-30
  • 打赏
  • 举报
回复
printf()和fprintf(stdout,...)没什么区别。
goodluckyxl 2004-12-30
  • 打赏
  • 举报
回复
jk88811(文哥)
不要灌水

fprintf( FILE *fp, 格式信息, 变量 );
写入文件的方法
char *str = "Yes";
int i = 1;
float f = 1.2;
fprintf( fp, "%s%c", str, '\n' ); //格式写入char*
fprintf( fp, "%d\n", i ); //格式写入int
fprintf( fp, "%f\n", f ); //格式写入 float

文件中信息:
Yes
1
1.20000
就这么用
printf这是打印到控制台格式化字符
printf("%s", str); //打印出str的内容 使用差不多


avalonBBS 2004-12-30
  • 打赏
  • 举报
回复
就是一般的打印屏幕,里面没有打文件的,如
fprintf(stdout,"asdfjk");
yegaofei 2004-12-30
  • 打赏
  • 举报
回复
可能是把信息保存在文件中,不至于在意外情况下信息丢失吧
jk88811 2004-12-30
  • 打赏
  • 举报
回复
唉,沙发被抢了呀
jk88811 2004-12-30
  • 打赏
  • 举报
回复
帮顶,先坐沙发先
YFY 2004-12-30
  • 打赏
  • 举报
回复
fprintf可以往文件输出格式化信息。
C语言中格式化信息比较麻烦。
宁静雪 2004-12-30
  • 打赏
  • 举报
回复
声明:我骂的是avalonBBS ,与其他兄弟无关.
goodluckyxl 2004-12-30
  • 打赏
  • 举报
回复
揭贴 还特地赶来骂一句
我还以为有人补充回答
真是难为楼上的了
宁静雪 2004-12-30
  • 打赏
  • 举报
回复
傻 逼,我还以为你有多大能耐,原来是狗屎一堆.
mefit 2004-12-30
  • 打赏
  • 举报
回复
fprintf(stderr, _assertstring, expr, filename, lineno);
这个是对出错的处理,stderr表示输出到显示器上,不支持重定向,只能在显示器上显示
stdout也表示输出到显示器上,但是可以重定向
avalonBBS 2004-12-30
  • 打赏
  • 举报
回复
当然当然,
我确切的是想清楚为何能用printf输出的地方,那人的程序中却全部用了fprintf来写。

确切的说是它完全用fprintf来替代了printf,
PS,我知道printf功能上是fprintf的一子集。

只是想弄明白这样做是基于什么原因上的,不会是摆POSS吧 ,呵呵,谢谢大家
vonil 2004-12-30
  • 打赏
  • 举报
回复
fprintf()可以输出到文件也可以到屏幕。而printf()只能输出到屏幕,它是一个标准输出函数
fprintf()的功能强于frintf()
我的看法,更具体的,请教一下高人吧。。。。
avalonBBS 2004-12-30
  • 打赏
  • 举报
回复
终于找到一段了,是vc里面的如下:(部分代码)
//////////////////////////////////////////////////////////////////////////////////////////
static char _assertstring[] = "Assertion failed: %s, file %s, line %d\n";
void __cdecl _assert (void *expr,void *filename,unsigned lineno )
{
if ( (__error_mode == _OUT_TO_STDERR) ||
((__error_mode == _OUT_TO_DEFAULT) && (__app_type == _CONSOLE_APP)) )
{
if ( !anybuf(stderr) )
(void) setvbuf(stderr, NULL, _IONBF, 0);
fprintf(stderr, _assertstring, expr, filename, lineno);
fflush(stderr);
}
.....................
这里面的fprintf(stderr, _assertstring, expr, filename, lineno);
正好就是我想说的那种情况,当然它在这可能是因为stderr.
winstonch 2004-12-30
  • 打赏
  • 举报
回复
kobefly(科比---不惧挑战!) 和Flood1984(峰子)(请不要做浮躁的人)说的对
muroachanf 2004-12-30
  • 打赏
  • 举报
回复
fprintf可以输出到文件,printf则指定只能输出到屏幕上去。
Flood1984 2004-12-30
  • 打赏
  • 举报
回复
printf()只是fprintf()的一种特例(当fprintf()的第一个参数为stdout时)。
kobefly 2004-12-30
  • 打赏
  • 举报
回复
没什么本质的区别

只是fprintf()的范围更广一点,可以输出倒指定文件

而printf()只能输出到标准控制台
至于使用方法也是相同的

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧