格式化输入输出

来源:互联网 发布:mac os 获取root权限 编辑:程序博客网 时间:2024/05/16 06:31

格式化输入输出分别指scanf和printf函数。

所谓格式化输入就是如果要输入,输入的格式必须与scanf中的格式相同,否则就无法输入。

例如:

scanf("num=%d",&num);

如果直接输入数值"1",不能完成对num的赋值,只有输入“num=1”才能对num赋值。

scanf输入的值通常先保存在缓冲区内,之后再根据变量数据类型取值。这样有时会产生问题,如果先对一个整型变量进行格式化输入,之后对一个字符型变量进行格式化输入,就会发现,输入整型变量的之后,对于字符型变量的格式化输入直接跳过。这是由于通常输入时回车也会被读入缓冲区,而int型变量只需要4个字节的数据,取走后缓冲区还有回车符存在,回车符为一个字节,而char型变量只需要读入一个字节数据,缓冲区正好还有一个字节数据,所以直接读取,不需要再另外输入。在char型变量格式化输入语句前加getchar()可以解决这个问题。

printf是缓冲区满行输出,未满行不输出,平常使用时不加'\n'也能输出是因为函数运行结束时会清缓冲区,清缓冲区时会把没输出的内容输出。以下程序可以验证。

#include <stdio.h>

int main()

{

    printf("hello world");

    while(1);

    return 0;

}

此程序只运行while循环,不进行printf输出。

另外,printf和scanf共用一个缓冲区。

0 0