fprintf中,printf和sprintf的区别?fprintf中,printf和sprintf

2019-05-12 13:55发布

任何人都可以用简单的英语有关之间的差异解释printffprintf ,和sprintf举例?

什么流是哪个?

我真的在这三个之间的混淆一边念叨“文件用C处理”。

Answer 1:

在C中,“流”是一种抽象; 从程序的角度来看,这是简单地字节的生产者(输入流)或消费者(输出流)。 它可以对应于磁盘上的文件,以一个管道,到终端,或某一其它装置如打印机或终端。 该FILE类型包含有关流的信息。 通常情况下,你做一个不要乱FILE对象的内容直接,你只是一个指针,它传递到各个I / O例程。

有三个标准流: stdin是一个指向标准输入流, stdout是一个指针到标准输出流,并且stderr是一个指针到标准错误输出流。 在互动环节,这三个通常是指到控制台,虽然你可以重定向它们指向其它文件或设备:

$ myprog < inputfile.dat > output.txt 2> errors.txt

在这个例子中, stdin现在指向inputfile.datstdoutoutput.txtstderr指向errors.txt

fprintf写入格式的文本到指定的输出流。

printf等同于书写fprintf(stdout, ...)和写入格式的文本到哪里标准输出流当前指向。

sprintf写入格式化的文本的阵列char ,而不是流。



Answer 2:

printf输出到标准输出流( stdout

fprintf去的文件句柄( FILE*

sprintf归你分配的缓冲区。 ( char*



Answer 3:

的printf(“格式”,参数)被用于打印数据到标准输出这常常是计算机监视器。

sprintf的 (字符*, “格式”,参数)是如printf。 代替上即在监视器的标准输出显示格式化的字符串,它存储在一个串中的格式化数据由字符指针(非常第一参数)指向。 字符串位置是printf和冲刺语法之间的唯一区别。

fprintf中 (FILE * FP, “格式”,参数)是如printf一次。 这里上,而不是显示在监视器上的数据,或将其保存在某些字符串,该格式化的数据被保存在其上通过其被用作到fprintf中的第一个参数的文件指针指向一个文件。 文件指针是唯一除了对printf的语法。

如果stdout文件用作fprintf中的第一个参数,它的工作是那么认为相当于printf函数。



Answer 4:

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

fprintf用于输出到流。

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

请注意,还有vsprintfvfprintfvprintf



Answer 5:

你也可以做的非常有用的东西与vsnprintf()函数:

$ cat test.cc
#include <exception>
#include <stdarg.h>
#include <stdio.h>

struct exception_fmt : std::exception
{
    exception_fmt(char const* fmt, ...) __attribute__ ((format(printf,2,3)));
    char const* what() const throw() { return msg_; }
    char msg_[0x800];
};

exception_fmt::exception_fmt(char const* fmt, ...)
{
    va_list ap;
    va_start(ap, fmt);
    vsnprintf(msg_, sizeof msg_, fmt, ap);
    va_end(ap);
}

int main(int ac, char** av)
{
    throw exception_fmt("%s: bad number of arguments %d", *av, ac);
}

$ g++ -Wall -o test test.cc

$ ./test
terminate called after throwing an instance of 'exception_fmt'
  what():  ./test: bad number of arguments 1
Aborted (core dumped)


Answer 6:

的printf

  1. printf的是用来在屏幕上进行输出。
  2. 语法= printf("control string ", argument );
  3. 它不与文件输入/输出相关

fprintf中

  1. 它曾经在文件中进行写操作的fprintf中的文件句柄指向。
  2. 语法是fprintf (filename, "control string ", argument );
  3. 它是用文件输入/输出相关联的


Answer 7:

fprintf这是用流,其中为相关printf类似声明fprintf涉及到流,但不是,那是fprintf的相关文件



Answer 8:

的sprintf:写入格式化的数据为字符串在存储器而不是标准输出

sprintf的语法是:

#include <stdio.h>
int sprintf (char *string, const char *format
[,item [,item]…]);

这里,

串指指向缓冲区的指针在存储器,其中数据将被写入。

格式是指指针指向字符串定义的格式。

每个项目是一个变量或表达式中指定要写入数据。

通过sprintf的返回的值大于或等于零,如果操作成功或换言之字符数写入,不计算终止空字符被返回并返回一个值小于零,如果出现了错误。

printf的:打印到stdout

语法的printf是:

printf format [argument]…

的sprintf()和printf()之间的唯一区别是的sprintf()的数据写入到一个字符阵列,而printf()的数据写入到标准输出,标准输出设备。



文章来源: Difference between fprintf, printf and sprintf?
标签: c io stream printf