嵌入式学习(四)--C语言(第二章)(输入输出函数)

输入输出函数


目录

一、函数

二、函数接口

        1.对单个字符串的输入输出(getchar、putchar)

        2.格式化字符串的输入输出(printf、scanf)

        3.字符串的输入输出

                1. printf的使用形式

                2. scanf使用形式

                3. 字符串的输入输出(puts、gets)


一、函数

        C语言中输入输出需要通过函数实现,使用前加上#include,如:

#include <stdio.h>
#include <string.h>

#include "head.h"

二、函数接口

        1.对单个字符串的输入输出(getchar、putchar)

函数名功能使用形式
putchar向终端输出一个字符 (传入一个字符的ASCII码值,将该值对应的字符显示在屏幕上)

putchar('a');

putchar(100);

putchar(ch); putchar(ch+5);

getchar从终端接收一个字符,表达式的结果为接到字符的ASCII码值

char ch = 0;

ch = getchar();

        2.格式化字符串的输入输出(printf、scanf)

函数名功能
printf向终端输出格式化的字符串
scanf从终端接收格式化的字符串

        3.字符串的输入输出

                1. printf的使用形式

                        ■ 1. 打印非输出控制符

printf("hello world\n");

=====================================================================

\0                        字符串结束标志

\n                        换行符

\b                        退格符

\t                        横向制表符

\v                        纵向制表符

\r                        回车符

\"                        " 字符

\\                        \ 字符

                        ■ 2. 打印输出控制符

int num = 0;

printf("num = %d\n", num);

=====================================================================

char ch = 0;

printf("ch = %c\n", ch);

=====================================================================

double d = 0;

printf("d = %lf\n", d);

=====================================================================

%d                      按照十进制打印

%o                      按照八进制打印

%x                      按照十六进制打印

%c                      按照字符打印

%u                      按照无符号类型打印

%f                       按照浮点数类型打印

%ld                     按照long类型打印

%lf                      按照double类型打印

%s                      按照字符串打印

%p                      按照指针打印

%e                      按照指数打印

%%                     打印%号

                        ■ 3. printf打印多个输出控制符

                                □  输出控制符个数必须与表达式个数一一对应

printf("num1 = %d, num2 = %d\n", num1, num2);

                        ■ 4. 格式

%nd                         n:域宽,不足域宽,高位用空格补齐

%.mf                        m:小数点后保留m位有效数字

%-nd                        -:左对齐

%0nd                       0:不足域宽,高位用0补齐

                2. scanf使用形式

                        从终端接收字符串转换为 " " 中间的格式

                        ■ 1. scanf接收非输入控制符

scanf("mn");
scanf("请输入一个数字");

                                □  如果接收非输入控制符,需要在屏幕中将所有字符原封不动输入

                                □  scanf中尽量少出现非输入控制符

                                □  scanf认为' '和'\n'是用户结束数据的标志,所以不会读取到代码中

                        ■ 2. scanf接收输入控制符

                                □  scanf除了%s可以不加&,其余都需要加&符号

int num = 0;

scanf("%d", &num);

=====================================================================

float f = 0;

scanf("%f", &f);

=====================================================================

double d = 0;

scanf("%lf", &d);

=====================================================================

char ch = 0;

scanf("%c", &ch);

=====================================================================

char str[32] = {0};

scanf("%s", ch);

=====================================================================

%d                         将字符串转换为十进制

%c                         从终端接收一个字符

_%c                       从终端接收一个非空格和\n的字符

%f                          将字符串转换为float类型

%lf                         将字符串转换为double类型

%s                         从终端接收一个字符串

                       ■ 3. scanf接收多个输入控制符

int Num1 = 0;
int Num2 = 0;

scanf("%d %d", &Num1, &Num2);
                3. 字符串的输入输出(puts、gets)
函数名功能注意事项
puts向终端打印一航字符串puts会多打印一个 \n 字符串
gets从终端接受一行字符串gets可以接收带' '的字符串,scanf无法接收带' '的字符串

                       ■  实际应用

/* 定义一个存储 32 个字符的字符数组str,并用字符串"hello world"初始化 */
char str[32] = {"hello world"};

/* 输出字符串,下两项作用相同(后自动跟一个换行) */
puts("hello world");
puts(str);

/* 输出字符串,下两项作用相同('/n'表示换行) */
printf("hello world\n");
printf("str = %s\n", str);


/* 定义字符数组str并初始化为全0(即每个元素都是\0)(常用于数组清零) */
char str[32] = {0};

/* 从终端读取字符串到str,直到遇到换行符为止(换行符会被丢弃,自动添加\0)*/
gets(str);
/* 用格式化输入函数读取字符串,遇到空格、制表符或换行符时停止 */
scanf("%s", str);

                       ■  缺点

                                □  gets 不检查数组长度,输入过长会导致缓冲区溢出

                                □  scanf 同样不检查输入长度,存在溢出风险,且无法读取含空格的字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值