1、printf 简介
1.1 printf 的格式
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("输出控制符1 输出控制符2…", 输出参数1, 输出参数2, …);
# include <stdio.h>
int main(void)
{
int i = 10;
int j = 3;
printf("%d %d\n", i, j);
return 0;
}
输出控制符 1 对应的是输出参数 1,输出控制符 2 对应的是输出参数 2……
1.2 输出控制符
常用的输出控制符如下:
![](https://img-blog.csdnimg.cn/18fbcb7c39504470b1337f30d3389766.png)
【示例】调用 printf() 函数输出具有以下数据:
printf("%d %d %d %d\n", 20, 345, 700, 22);
printf("%d %d %d %d\n", 56720, 9999, 20098, 2);
printf("%d %d %d %d\n", 233, 205, 1, 6666);
printf("%d %d %d %d\n", 34, 0, 23, 23006783);
还可以自动调整数据的输出格式、控制输出小数的位数等。
1.3 控制符%x、%X、%#x、%#X 的区别
输出控制符 %x(或 %X 或 %#x 或 %#X),可用于调试的时候将内存中的二进制代码全部输出,然后用十六进制显示出来。下面看看它们四个有什么区别:
#include <stdio.h>
int main(void)
{
int i = 47;
printf("%x\n", i);
printf("%X\n", i);
printf("%#x\n", i);
printf("%#X\n", i);
return 0;
}
在 VC++ 6.0 中的输出结果:
2f
2F
0x2f
0X2F
从输出结果可以看出:如果是小写的x
,输出的字母就是小写的;如果是大写的X
,输出的字母就是大写的;如果加一个#
就以标准的十六进制形式输出。
最好是加一个#
,否则如果输出的十六进制数正好没有字母的话会误认为是一个十进制数呢!总之,不加#
容易造成误解。但是如果输出 0x2f 或 0x2F,那么人家一看就知道是十六进制。而且%#x
和%#X
中,笔者觉得大写的比较好,因为大写是绝对标准的十六进制写法。
1.4 如何输出 %d、\ 和双引号
printf 中的输出控制符%d
,转义字符对应的反斜杠\ ,
还有双引号。怎样将这三个符号通过 printf 输出到屏幕上呢?
要输出%d
只需在前面再加上一个%
,要输出\
只需在前面再加上一个\
,要输出双引号也只需在前面加上一个\
即可。程序如下:
# include <stdio.h>
int main(void)
{
printf("%%d\n");
printf("\\\n");
printf("\"\"\n");
return 0;
}
在 VC++ 6.0 中的输出结果是:
%d
\
""
1.5 printf总结
输出控制符中,%d、%f、%s、%c 是最常用的,它们分别是输出整数、实数、字符串和字符的控制符。有关 %x、%X、%#x、%#X 四种用法的区别,只需要了解一下即可。
2、scanf 简介
2.1 scanf 的两种用法
它有两种用法,或者说有两种格式。
1) scanf("输入控制符", 输入参数);
功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。
# include <stdio.h>
int main(void)
{
int i;
scanf("%d", &i); //&i 表示变量 i 的地址,&是取地址符
printf("i = %d\n", i);
return 0;
}
1) scanf("输入控制符1 输入控制符2", 输入参数1,输入参数2);
一次给多个变量赋值:
# include <stdio.h>
int main(void)
{
int i, j;
scanf("%d%d", &i, &j);
printf("i = %d, j = %d\n", i, j);
return 0;
}
我们从键盘输入的全部都是字符。比如从键盘输入 123,它表示的并不是数字 123,而是字符 '1'、字符 '2' 和字符 '3'。%d
的含义就是要将从键盘输入的这些合法的字符转化成一个十进制数字.
虽然 scanf 中没有加任何“非输入控制符”,但是从键盘输入数据时,给多个变量赋的值之间一定要用空格、回车或者 Tab 键隔开,用以区分是给不同变量赋的值。而且空格、回车或 Tab 键的数量不限,只要有就行。一般都使用一个空格。
其它参考:
https://www.cnblogs.com/fsknsl/p/15363872.html
C语言scanf函数用法完全攻略