有谁能用简单的英语举例解释一下printf
、fprintf
和sprintf
之间的区别吗?
它在什么流中?
在阅读“C中的文件处理”时,我真的把这三种语言弄糊涂了。
发布于 2011-01-08 01:06:11
在C中,“流”是一种抽象;从程序的角度来看,它只是字节的生产者(输入流)或消费者(输出流)。它可以对应于磁盘上的文件,对应于管道,对应于您的终端,或者对应于某些其他设备,如打印机或tty。FILE
类型包含有关流的信息。通常,您不会直接处理FILE
对象的内容,只需将指向它的指针传递给各种I/O例程即可。
有三个标准流:stdin
是指向标准输入流的指针,stdout
是指向标准输出流的指针,stderr
是指向标准错误输出流的指针。在交互式会话中,这三个通常指的是您的控制台,但您可以将它们重定向到其他文件或设备:
$ myprog < inputfile.dat > output.txt 2> errors.txt
在本例中,stdin
现在指向inputfile.dat
,stdout
指向output.txt
,stderr
指向errors.txt
。
fprintf
将格式化文本写入您指定的输出流。
printf
等效于编写fprintf(stdout, ...)
,并将格式化文本写入标准输出流当前指向的任何位置。
sprintf
将格式化文本写入char
数组,而不是流。
发布于 2011-01-07 23:52:53
到标准输出流(stdout
)的printf
输出
fprintf
转到文件句柄(FILE*
)
sprintf
转到您分配的缓冲区。(char*
)
发布于 2011-01-07 23:52:52
printf(...)
等同于fprintf(stdout,...)
。
fprintf
用于输出到流。
sprintf(buffer,...)
用于将字符串格式化为缓冲区。
请注意,还有vsprintf
、vfprintf
和vprintf
https://stackoverflow.com/questions/4627330
复制相似问题