设为首页 加入收藏

TOP

C/C++标准输入输出函数终极最全解析(不全捶我)(三)
2023-07-23 13:35:28 】 浏览:74
Tags:C/C 终极最 全解析 全捶我
uot;Number b = %.2f", b); // 浮点数,保留两位小数 printf("String s = %s", s); // 字符串

printf()的写法与scanf()十分相像。区别在于scanf()中一般只有格式控制字符,而没有其他普通字符,而printf()中常常是在一串字符中把要替换的内容写为格式控制字符,从而形成格式化输出的效果。

puts()

将字符串和一个尾随的换行符\n写入到stdout的缓冲区。根据行缓冲的性质,终端也会立即进行打印显示。

用法示例:

puts("hello");    // 立即输出hello并换行

puts()对换行符的处理与gets()“相反”。gets()会自动丢弃一个换行符,而puts()则是自动写入一个换行符。

fputs()

字符串写入指定输出流,可以是文件流、stdoutstderr等。stderr是标准错误流,它是无缓冲的,会立即输出到屏幕,而不是等待换行符才输出。

用法示例:

fputs("hello world", stdout);    // 不会立即输出
fputs("hello world\n", stdout);  // 立即输出
fputs("hello world", stderr);  // 立即输出

fgets()一样,fputs()不会主动操作换行符。如果希望立即输出,需要自己加上换行符\n

fputc() & putc()

一个字符写入指定输出流,可以是文件流、stdoutstderr等。

用法示例:

char c = 'q';
fputc(c, stdout);
c = '\n';
putc(c, stdout);

fputc()putc()只是把字符写入stdout,没有任何额外操作。因此如果希望立即输出,需要自己加上换行符\n

putchar()

一个字符写入到标准输出流stdout

用法示例:

char c = 'x';
putchar(c);

同上,putchar()不操作换行符。如果希望立即输出,需要自己加上换行符\n

fflush()

该函数的功能是强制刷新缓冲区,将数据立即写到对应的文件(或设备)。其参数可以是文件流指针,也可以是stdout

用法示例:

fputs("Hello World!", stdout);
fflush(stdout);
while (1);

上面的程序在进入死循环前,会输出Hello World!字符串到屏幕。

注意:不能够将fflush()用于stdin!这可能导致不可预料的后果。

C++ 标准输出

cout

coutostream类的一个实例。cout是行缓冲的。

用法示例:

char str[] = "hello world";
cout << "str: " << str << endl;

插入endl对象时,将立即清空输出缓冲区并显示,然后输出一个换行符\n

也有cout.put()等函数,不常用。

cerr

cerr是标准错误流,也是ostream类的一个实例,并默认输出设备为显示屏上的命令行终端。它默认与stderr同步。

cerr非缓冲的,即插入数据时会立即输出。

用法示例:

char str[] = "File open FAILED!";
cerr << "[Error] " << str;

clog

clog是标准日志流,也是ostream类的一个实例,并默认输出设备为显示屏上的命令行终端。

clog是有缓冲的,但具体的刷新条件没有找到资料。实测以下代码是可以输出在屏幕的:

clog << "Failed!";
while(1){}

总结

标准输出相比输入来说较为简单。需要注意的是stdoutcout行缓冲的,而stderrcerr无缓冲的。

C++ 流的高级用法请参考其他资料。

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Vim 配置 C/C++使用组合快捷键格.. 下一篇<四>模板的完全特例化和非..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目