[学习笔记]C标准库 输入输出函数及格式控制字符详解

    选择打赏方式

printf 函数的原型为:

# include <stdio.h>

int printf(const char *format, ...);



printf 的格式有四种:

1. printf("字符串\n");

# include <stdio.h>

int main(void)

{

   printf("Hello World!\n");  // \n表示换行

   return 0;

}


2.printf("输出控制符",输出参数);

# include <stdio.h>

int main(void)

{

   int i = 10;

   printf("%d\n", i);  /*%d是输出控制符,d 表示十进制,后面的 i 是输出参数*/

   return 0;

}


3.printf("输出控制符1 输出控制符2…", 输出参数1, 输出参数2, …);

# include <stdio.h>

int main(void)

{

   int i = 10;

   int j = 3;

   printf("%d %d\n", i, j);

   return 0;

}


4.printf("输出控制符 非输出控制符",输出参数);


# include <stdio.h>

int main(void)

{

   int i = 10;

   int j = 3;

   printf("i = %d, j = %d\n", i, j);

   return 0;

}




常用格式控制符表

控制符 说明
%d 按十进制整型数据的实际长度输出。
%ld 输出长整型数据。
%md m 为指定的输出字段的宽度。如果数据的位数小于 m,则左端补以空格,若大于 m,则按实际位数输出。
%u 输出无符号整型(unsigned)。输出无符号整型时也可以用 %d,这时是将无符号转换成有符号数,然后输出。但编程的时候最好不要这么写,因为这样要进行一次转换,使 CPU 多做一次无用功。
%c 用来输出一个字符。
%f 用来输出实数,包括单精度和双精度,以小数形式输出。不指定字段宽度,由系统自动指定,整数部分全部输出,小数部分输出 6 位,超过 6 位的四舍五入。
%.mf 输出实数时小数点后保留 m 位,注意 m 前面有个点。
%o 以八进制整数形式输出,这个就用得很少了,了解一下就行了。
%s 用来输出字符串。用 %s 输出字符串同前面直接输出字符串是一样的。但是此时要先定义字符数组或字符指针存储或指向字符串,这个稍后再讲。
%x(或 %X 或 %#x 或 %#X) 以十六进制形式输出整数,这个很重要。


关于格式控制符的详细解释

%d和%md

%d.png


%f     %.mf     %n.mf

输出结果遵循四舍五入的原则,所以3.1415926保留4位小数结果是3.1416。

%f.png



%x、%X、%#x、%#X 的区别

x的大小写控制输出字符的大小写,加#则按照标准十六进制输出。

%x.png




1.scanf()


scanf()函数是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量中。

在scanf()语句的格式串中由于没有非格式字符在“%d%d%d”之间作为输入时的间隔,因此在输入时要用一个以上的空格或回车符作为每两个输入数之间的间隔。


scanf()在读取数字时会跳过空格、制表符和换行符!


scanf会把输入的数据当作整数写入参数2的变量地址中

另外,这样是很危险的, 数据流被阻塞,如果不强行跳出循环,这个循环会无限下去。


1.png


图:

2.png


空格这个东西,不强制,有就行,不过如果是“-”、“,”,还是要原样输入才行。

3.png


scanf和printf作用相反但是格式控制是一样的,输入中文试试看?

膜蛤辱包.gif

注意:scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。





getchar()函数是键盘输入函数,其功能是从键盘上输入一个字符。

简单来说就是getchar()函数在C程序中的功能是接收一个字符。


注意:getchar同时也会接收enter键,所以需要多加一个getchar。

1.gif


2.gets()


  • scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。
  • gets() 认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。

2.gif


conio.h中 windows特有的函数:


1.getche()

getche() 没有缓冲区,输入一个字符后会立即读取,不用等待用户按下回车键.


3.gif




2.getch()

getch() 也没有缓冲区,输入一个字符后会立即读取,不用按下回车键,这一点和 getche() 相同。getch() 的特别之处是它没有回显,看不到输入的字符。所谓回显,就是在控制台上显示出用户输入的字符;没有回显,就不会显示用户输入的字符,就好像根本没有输入一样。


回显在大部分情况下是有必要的,它能够与用户及时交互,让用户清楚地看到自己输入的内容。但在某些特殊情况下,我们却不希望有回显,例如输入密码,有回显是非常危险的,容易被偷窥。

8f171548316576.gif

版权声明:若无特殊注明,本文皆为《 8964CN 》原创,转载请保留文章出处。
本文链接:[学习笔记]C标准库 输入输出函数及格式控制字符详解 http://www.8964cn.net/?post=48
正文到此结束

热门推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻 大笑 可怜 吃惊 害羞 调皮 鄙视 示爱 大哭 开心 偷笑 嘘 奸笑 委屈 抱抱 愤怒 思考 日了狗 胜利 不高兴 阴险 乖 酷 滑稽

评论信息框

吃奶的力气提交吐槽中...


既然没有吐槽,那就赶紧抢沙发吧!