一.字符输入输出函数
1. putchar函数(字符输出函数)
从内存向终端输出一个字符。其一般形式为 putchar(c),c既可以是字符型变量或整型变量。
putchar('A');
putchar(65);
输出AA
2. getchar函数 (字符输入函数)
从终端向内存输出一个字符。getchar函数没有参数,其一般形式为 getchar(),函数的值就是从输入设备得到的字符。
int ret=getchar();
putchar(ret);
printf("%d,%c\n",ret,ret);
输入 A
输出 A65,A
putchar与getchar可结合使用
putchar(getchar()-32);
实现将终端输入的小写字母转换为大写输出
3. printf
printf的一般形式为:printf(格式控制,输出表列),当二者数量不匹配时多余位随机输出
整型:
1. %u 以十进制无符号整型输出
2. %lu 以十进制无符号长整型输出
%ld 以十进制长整型输出
由于int与char型兼容,%c也可输出整型,如输出int时会将高位截断,保留低八位转换为对应的ASCII码值,虽结果有误,但语法正确
浮点型:
3. %f 以float型输出,也可以输出double
%lf 以double型输出
八进制:
4. %o 以八进制输出
%#o 以0xxx输出八进制
十六进制:
5.%x 以十六进制输出
%#x 以0x输出十六进制(小写)
%#X 以0X输出十六进制
科学计数法:
6. %e
%E
' \" ' 输出 "
域宽输出:
7. %nd 以n位域宽输出,若数据大于n位则以实际位数输出,否则左侧补空
%-nd 以n位域宽输出左对齐
%0nd 以n位域宽输出并且前面补0
%.nf 以n位小数输出
%m.nf 以m位域宽,n位小数输出
%-0nd 报警告只会左对齐不补零
八进制与十六进制也可指定输出域宽,如%8o表示输出八位八进制数,%8x表示输出八位十六进制数;此外,%lo与%lx则可表示以八和十六进制输出long型。
八进制和十六进制输出无关符号
int a = -1;
printf("十进制(有符号): %d\n", a); // 输出:-1
printf("八进制(无符号): %o\n", a); // 输出:37777777777(32位系统)或1777777777777777777777(64位)
printf("十六进制(无符号): %x\n", a); // 输出:ffffffff(32位系统)或 ffffffffffffffff(64位)
总结如下图所示
4. scanf
将从终端输入的值存入已开辟的内存地址中。
1.格式说明


在输入整型时,可以使用空格,Tab与Enter隔开两数,除此之外用其他字符则会直接中断输入,舍弃后续读入的数字。
scanf("%d %d",&m,&n);
scanf("%d%d",&m,&n);
这两种写法相同,同时若输入小数,则只会保存整数部分
在%c输入字符时, 中间加空格可吸收所有空格,Tab与Enter。
scanf("%c %c",&a,&b);//可吸收空格,Tab与Enter
scanf("%c%c",&a,&b);//读取空格,Tab与Enter,因为其也是字符
2.注意事项
此外 ,%f 不能接收double型,且双引号里写了什么,在输入时也要相同,所以除了格式控制符之外尽可能少写其他数据。以下是使用scanf时应注意的事项。


此外,当有多次scanf输入时,在终端会连续读取
int a;
char ch;
scanf("%d",&a);
//getchar();
scanf("%c",&ch);
当输入一个整型之后会继续读取下一行的字符输入,可使用getchar()吸收空格等,注意getchar只能读取一个字符
int ch;
while ((ch = getchar()) != '\n' && ch != EOF);
//通过循环可实现持续吸收缓存
5. puts/gets
puts 将字符串从内存输出到终端,自动换行
char str[128]={"hello,world"};
puts(str);
gets 将字符串从终端读到内存(字符串数组),可能造成越界访问。
char str[128]={0};
gets(str);
二.函数定义的一般形式
三.函数的参数与值
四.函数的调用
五.函数的嵌套与递归
未完待更。。。

1847

被折叠的 条评论
为什么被折叠?



