首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >fprintf,printf和sprintf之间的区别?

fprintf,printf和sprintf之间的区别?
EN

Stack Overflow用户
提问于 2011-01-07 23:49:47
回答 6查看 237.4K关注 0票数 256

有谁能用简单的英语举例解释一下printffprintfsprintf之间的区别吗?

它在什么流中?

在阅读“C中的文件处理”时,我真的把这三种语言弄糊涂了。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-01-08 01:06:11

在C中,“流”是一种抽象;从程序的角度来看,它只是字节的生产者(输入流)或消费者(输出流)。它可以对应于磁盘上的文件,对应于管道,对应于您的终端,或者对应于某些其他设备,如打印机或tty。FILE类型包含有关流的信息。通常,您不会直接处理FILE对象的内容,只需将指向它的指针传递给各种I/O例程即可。

有三个标准流:stdin是指向标准输入流的指针,stdout是指向标准输出流的指针,stderr是指向标准错误输出流的指针。在交互式会话中,这三个通常指的是您的控制台,但您可以将它们重定向到其他文件或设备:

代码语言:javascript
复制
$ myprog < inputfile.dat > output.txt 2> errors.txt

在本例中,stdin现在指向inputfile.datstdout指向output.txtstderr指向errors.txt

fprintf将格式化文本写入您指定的输出流。

printf等效于编写fprintf(stdout, ...),并将格式化文本写入标准输出流当前指向的任何位置。

sprintf将格式化文本写入char数组,而不是流。

票数 267
EN

Stack Overflow用户

发布于 2011-01-07 23:52:53

到标准输出流(stdout)的printf输出

fprintf转到文件句柄(FILE*)

sprintf转到您分配的缓冲区。(char*)

票数 170
EN

Stack Overflow用户

发布于 2011-01-07 23:52:52

printf(...)等同于fprintf(stdout,...)

fprintf用于输出到流。

sprintf(buffer,...)用于将字符串格式化为缓冲区。

请注意,还有vsprintfvfprintfvprintf

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4627330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档