总结:c的输入输出函数
1.scanf()&printf()
在使用输入输出函数的时候,不管是从文件还是控制台,它都是会先存放在缓冲区里面,但需要使用的时候才会在缓冲区里面提取。
scanf()函数是从标准输入设备(键盘)读取数据,并将值存放在变量中。scanf("%d",&n);
\n | 换行 |
\f | 清屏并换页 |
\r | 回车 |
\t | Tab符 |
%o | 输入八进制整数 |
%x | 输入十六进制整数 |
- scanf("%d,%d",&a,&b);
输入: 3,4 (逗号与"%d,%d"中的逗号对应)
- 如果输入3 4 用空格隔开的数字两个%d之间可以不加空格
scanf("%d%d",&a,&b)
因为scanf()函数接收输入数据时,遇空格、“回车”、“tab”键 结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)
#include <stdio.h>
int main()
{
char str[11];
scanf("%s",str);
printf("%s",str);
return 0;
}
输入:abc def
输出:abc
- 在用"%c"输入时,空格和“转义字符”均作为有效字符。 //以下【空格】代表‘ ’一个空格
scanf("%c%c%c",&c1,&c2,&c3);
输入:a【空格】b【空格】c
结果:a→c1,【空格】→c2,b→c3 (其余被丢弃)
printf()函数是格式化输出函数, 用于向标准输出设备按规定格式输出信息。printf("%d",n);
只有double型变量,在scanf中式%lf,在printf中是%f。
关于常见的输出格式:
- 1. %md可以使不足m位的 int 型变量以m位进行右对齐输出,其中高位用空格补齐:如果变量本身超过m位, 则保持原样。
- %0md只是在%md中间多加了0。和%md的唯一不同点在于, 当变量不足m位时,将在前面补足够数量的。而不是空格。
- %.mf可以让浮点数保留m位小数输出, 这个 “保留” 使用的是精度的 “ 四舍六入五成双 ”规则很多题目都会要求浮点数的输出保留××位小数(或是精确到小数点后××位〉,就是用这个格式来进行输出(如果是四舍五入,那么需要用到后面会介绍的 round 函数)。
2.getchar()&putchar()
getchar 用来输入单个字符, putchar 用来输出单个字符, 在某些scanf 函数使用不便的场合可以使用getchar 来输入字符。
getchar() 从缓冲区读走一个字符,相当于清除缓冲区,一般用于取走回车符。
第一个字符‘a’被c1接收;第二个字符'b'虽然被接收, 但是没有将它存储在某个变量中.
3.gets()&puts()函数
gets(s);
gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束, 但回车符不属于这个字符串。
gets(s)函数与scanf("%s", &s)相似, 但不完全相同, 使用scanf("%s",&s)函数输入字符串时,如果输入了空格会认为输入字符串结束,空格后的字符将作为下一个输入项处理, 但gets() 函数将接收输入的整个字符串直到回车为止。
4.字符数组
5.sscanf与sprintf
输出结果为233
sprintf函数
(1)将数字变量转换为字符串。
(2)得到整型变量的16进制和8进制字符串。
(3)连接多个字符串。
char str[256] = { 0 };
int data = 1024;
//将data转换为字符串
sprintf(str,"%d",data);
//获取data的十六进制
sprintf(str,"0x%X",data);
//获取data的八进制
sprintf(str,"0%o",data);
const char *s1 = "Hello";
const char *s2 = "World";
//连接字符串s1和s2
sprintf(str,"%s %s",s1,s2);
还可以参考链接:https://www.cnblogs.com/wangtianxj/archive/2009/07/04/1516646.html