\n换行
9.1 字符输出函数putchar
1.输入输出(一)
(1)数据输出
- C语言无I/O语句,I/O操作由函数实现
#include <stdio.h>
- 字符输出函数
格式:putchar(c)
参数:c为字符常量、变量或表达式(要输出的内容)
功能:把字符c输出到显示器上(输出一个字符)
返回值:正常为显示的代码值(正常所输出的字符的ASCII值)
例子:
#include <stdio.h>
main()
{ int c;
char a;
c=65;a='B'
putchar(c);purchar('\n');putchar(a) //(c)整形变量('\n')字符常量 (a)字符型变量
}
运算结果为:A
B
int purchar(int c) //参数类型是Int代表输出的字符 int认为是它的ASCII码值
9.2 格式输出函数
- 格式:printf (“格式控制串”,输出表)
功能:按指定格式向显示器输出数据
输出表:要输出的数据
格式控制串:包含两种信息
(1)格式说明:%[修饰符]格式字符,用于指定输出格式
(2) 普通字符:原样输出
%d整型
%c字符型
1. 格式字符
打印整型数用%d %o %x都可以 unsinged int可以用%u
- int a =567;printf("%d",a); //567
- int a =255;printf("%x",a); //ff
- int a =65;printf("%o",a); //101
- int a =567;printf("%u",a); //567
- char a =65;printf("%c",a); //A (字符型变量)
%s字符串输出 'A'字符型输出 输出字符%c 如输出ASCII值是用%d变量
浮点型数据输出 小数形式%f 科学计数法形式或指数形式%e 选一个最简洁的%g
printf("%%") //% (是打印一个百分号)
9.3 printf的附加说明符的使用
1.附加格式说明符
2.输出函数格式字符
8是m输出数据的宽度 (比如变量里存的整数就是10打印到屏幕上就是两位10 如果写一个8d就是希望输出凑够8位 所以左补空格 {使得屏幕输出比较整齐 经常用来调格式})
a是1234 8d就是左面补四个空格 2d是显示两位但是a位1234不合理 m就原样输出(数据长度>=m就原样输出 2就不起作用了)
所以第一个printf输出 // 1234,1234
8.1 m.n (n是小数点后面的位数 默认保留六个小数位)
例 static char a[]="Hello,world!"
printf("%s\n%15s\n%10.5s\n52.5s\n%.3s\n" ,a,a,a,a,a)
运行结果:Hello,world!
Hello,world!
Hello
Hello
Hel
对于一个字符串来说%s原样输出 15s不够的地方前面补空格
10.5s是整体有10个实际字符只有五个(之前是保留五个小数位,现在是保留五个字母)
3.格式输出函数
9.4字符输入函数getchar
1.输入输出(二)
(1)字符输入函数
字符输入函数getchar
- 格式:getchar()
- 功能:从键盘读入一字符
- 返值:正常,返回读取的代码值;出错或结束键盘输入,返回-1(用户按ctrl d 就是结束输入函数返回-1)
9.5格式输入函数scanf
1.格式输入函数
格式:scanf(“格式控制串”,地址表)
- 功能:按指定格式从键盘读入数据,存入地址表 指定
- 存储单元中,并按回车键结束
- 返值:正常,返回输入数据个数
- 地址表:变量的地址,常用取地址运算符&
目前,scanf支持的格式字符很多,如下
scanf函数支持的格式说明符可以带一下修饰符。
类似的float是f double是lf
说明:
用“%c”格式符时(字符型变量连续输入),空格和转义字符作为有效字符输入
例子,
scanf("%c%c%c",&c1,&c2,&c3);
若输入a b c
则c1位a,c2位空格,c3位b (因为空格在ASCII里面有是32)(当字符型数据输入时空格等是有效字符)
总结:
输入数据时,遇到以下情况认为该数据结束(都是分隔符):(针对整型数据)
- 遇空格、TAB、或回车
- 遇非法输入
- 遇宽度结束
例子,
- ret=scanf("%d%c%f",&a,&b,&c);
- 若输入1234a123o.26
- 则a为1234,b为'a',c为123
9.6输入函数的垃圾处理
1.输入输出(三)
(1)输入函数留下的“垃圾”
使用输入函数可能会留下垃圾
int x;
char ch;
scanf("%d",&x);
scanf("%c",&ch);
printf("x=%d,ch=%d\n",x,ch);
%d对应5 冒号之后换行了 换行后又接了冒号10(是因为输入5后 按了回车 回车就被x接收了 回车的ASCII就是10)
垃圾符号产生原因:当输入整型数接下来又要输入字符型的数 输入整型后回车 那个回车一定会被字符型语句的这句话接收 所以通过一个方式把输完数据的回车取出来
(2)清除垃圾的方法
方法1.用getchar()清除 (getchar的作用是从键盘上读入一个字符)
int x;
char ch;
scanf("%d",&x);
getchar();
ch=getchar();
printf("x=%d,ch=%d\n",x,ch);
方法2:用格式串中空格或"%*c"来“吃掉”
int x;
char ch;
scanf("%d",&x)
scanf(" %c",&ch);或scanf("%*c%c",&ch);
9.7字符串的输入输出
1.字符串输入函数
(1)字符串输入函数gets
- 格式:char * gets(char *s)
- 功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动加'\0'
- 说明1:输入串长度应小于字符数组维数(如是5最多输4个)
- 说明2:与scanf函数不同,gets函数并不以空格作为字符串输入结束的标志。
(scanf在处理字符串的时候%s 空格结束 但scanf在处理字符型变量的时候联系写%c这个可以处理空格)
如果程序想存一个字符串,通常用字符数组,字符数组通过字符串的输入函数,可以输入一系列字符进行赋值,而数组里也可以存一系列的内容
这个函数是危险的因为不能输入很多,输入很多后就会出现栈溢出错误,因为这种局部变量是放在栈上的(有变量自动分配自动回收的空间叫栈)
如[5]最多存4个,因为字符串里默认有一个字符作为结束标志的是'\0'
(2) 字符串输出函数
字符串输出函数puts
- 格式:int puts(const char*s) (puts的参数就是要输出的内容)
- 功能:向显示器输出字符串(输出完,自动换行)
- 说明:字符数组必须以'\0'结束
sqrt函数是开根号 用sqrt需要加个头文件#include <math.h> 最后gcc a.c 加一个-lm相当于链接选项