嵌入式学习LV1"/>
嵌入式学习LV1
D3.输入输出专题
如果出现图片无法查看可能是网络问题,我用的GitHub+图床保存的图片,用uu加速器说不定能解决,可以参考我另外一篇文章GitHub的使用方法
GitHub使用教程含网络问题_github加速器_肉丸子QAQ的博客-CSDN博客
关注后私信获取附加资料
1. 数据输出
1. 字符输出
- C语言无I/O语句,I/O操作由函数实现
- 字符输出函数
- 格式: putchar( c )
- 参数: c为字符常量、变量或表达式
- 功能:把字符c输出到显示器上
- 返值:正常,为显示的代码值;
示例:
#include <stdio.h>int main()
{int a = 65;char ch = 'B';putchar(a);putchar('\n');putchar(ch);putchar('\n');return 0;
实验现象:
2. 格式输出
- 格式:printf(“格式控制串”,输出表)
- 功能:按指定格式向显示器输出数据
- 输出表:要输出的数据
- 格式控制串:包含两种信息
- 格式说明:%[修饰符]格式字符,用于指定输出格式
- 普通字符:原样输出
格式符 作用 i, d 十进制整数 x,X 十六进制无符号整数 o 八进制无符号整数 u 无符号十进制整数 c 单一字符 s 字符串 e,E 指数形式浮点小数 f 小数形式浮点小数 g e和f中较短一种 %% 百分号本身
代码
#include <stdio.h>int main()
{int a = 254;char ch = 'A';char s[] = "dsfsdf";float f1 = 567.89;printf("%d %o %x\n", a, a, a);//十进制 八进制 十六进制printf("%c-%d\n", ch, ch);//单一字符 十进制(字符对应的ASCLL码值)printf("%s\n", s);//字符printf("%f-%e-%g\n", f1, f1, f1);//小数点形式 指数形式 两种方式选较短的一种return 0;
}
现象:
附加格式说明符
修饰符 | 功能 |
---|---|
m | 输出数据域宽,数据长度<m,左补空格;反之按实际输出 |
.n | 对实数,指定小数点后位数(四舍五入) |
对字符串,指定实际输出位数 | |
- | 输出数据在域内左对齐(缺省右对齐) |
+ | 指定在有符号数的正数前显示正号(+) |
0 | 输出数值时指定左面不使用的空位置自动填0 |
# | 在八进制和十六进制数前显示前导0,0x |
l | 在d, o, x, u前,指定输出精度为long型 |
l | 在e, f, g前,指定输出精度为double型 |
代码1:
#include <stdio.h>int main()
{int a = 254;float f1 = 345.667;char ch = 'a';printf("%8d\n%2d\n", a, a);printf("%9f-%9.2f-%.3f\n", f1, f1, f1);printf("ch=%5c\n", ch);return 0;
}
实验现象:
对于字符串来说
代码2:
#include <stdio.h>int main()
{char s[] = "Hellow world";printf("%15s\n", s);printf("%15.5s\n", s);printf("%2.5s\n", s);//小数点前面的是取宽度,太小则原样输出printf("%.5s\n", s);//小数点后面是取内容指定长度就输出多少长度return 0;
}
实验现象:
代码3:
#include <stdio.h>int main(int argc, char *argv[])
{int a = 254;float f1 = 345.7;char ch = 'a';printf("%08d\n%0+8d\n", a, a);printf("%09f-%09.2f-%.3f\n", f1, f1, f1);printf("ch=%5c\n", ch);return 0;
}
实验现象:
2. 数据输入
1. 字符输入
字符输入函数getchar
-
格式:
getchar( )
-
功能:从键盘读一字符
-
返值:正常,返回读取的代码值;出错或结束键盘输入,返回-1 (ctrl +d结束输入)
代码:
#include <stdio.h>int main()
{int ch;ch = getchar();//当自己不想输入时ctrl+d结束输入putchar(ch);putchar('\n');printf("ch=%d\n", ch);return 0;
}
实验现象:
2. 格式输入
-
格式:
scanf(“格式控制串”,地址表)
-
功能:按指定格式从键盘读入数据,存入地址表指定
-
存储单元中,并按回车键结束
-
返值:正常,返回输入数据个数
-
地址表:变量的地址,常用取地址运算符&
注意:scanf里面不要写提示语句,最好单独用printf写
格式输入函数
修饰符 | 功能 |
---|---|
h | 用于d, o, x前,指定输入为short型整数 |
l | 用于d, o, x前,指定输入为long型整数 |
用于e, f前,指定输入为double型实数 | |
m | 指定输入数据宽度,遇空格或不可转换字符结束 |
* | 抑制符,指定输入项读入后不赋给变量 |
代码:
#include <stdio.h>int main()
{int n,y,r;printf("input: ");scanf("%d,%d,%d", &n, &y, &r);//scanf("%d%d%d", &n, &y, &r);//这里需要注意当scanf里面带有逗号的时候也需要在键盘输入的时候带有并且可以不用使用回车来选择输入下一位//例如%d %d %d在输入时可以数字空格数字空格数字连续输入,逗号同理printf("%d-%d-%d\n", n, y, r);return 0;
}
注意:字符串输入时空格和转义字符作为有效字符输入
3. 垃圾输入处理
#include <stdio.h>int main()
{char x;int a;printf("input: ");scanf("%d",&a);//方法一getchar();//当输入完第一个scanf回车后,这个回车会直接带到下一scanf,需要一个getchar函数将回车消化//方法二//第二个scanf用格式串中空格或“%*c”来“吃掉”//scanf("%c",&a);//scanf("%*c%c",&x);scanf("%c",&x);printf("%d-%d-%c", a,x,x);printf("%d\n", '\n');return 0;
}
实验现象:
回车的ASCII值是10
4. 字符串输入函数
字符串输入函数gets
-
格式:
char * gets(char *s)
-
功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动加‘\0’,这里注意字符串数组大小减一是实际可输入字符串的个数结束符要占一个储存
-
说明1:输入串长度应小于字符数组维数
-
说明2:与scanf函数不同,gets函数并不以空格作为字符串输入结束的标志。
注意:scanf函数在输入字符串的时候中间不能有空格
代码
#include <stdio.h>int main()
{char s[5];gets(s);printf("%s", s);
}
字符串输出函数puts
-
格式:int puts(const char *s)
-
功能:向显示器输出字符串(输出完,换行),输出自动换行
-
说明:字符数组必须以‘\0’结束
作业
1.下列语句正确的是()
A.unsigned int i; scanf(“%d”,i); B. unsigned int i; scanf(“%f”,i);
C. unsigned int i; scanf(“%u”,&i);
2.以下程序
unsigned int Year,Mon,Day;
改为scanf(“%4u%2u%2u”,&Year,&Mon,&Day);
程序运行后在键盘输入20 16 1 2 0 2那么变量Day的值为()
A.1 B.12 C.2 D.21
3.用代码实现在终端上输入一行字符,原样输出(温馨提示:编程题需要把源码.c文件压缩上传到附件中,如果有多个,请压缩到一个压缩包中。)
- C
- A
-
#include <stdio.h> int main(void) { char str[10]; printf("请输入字符串:"); scanf("%s", str); printf("输出结果:%s\n", str); return 0; }
更多推荐
嵌入式学习LV1
发布评论