几种输入输出数据的方法
创始人
2025-06-01 00:13:48
0

文章目录

    • 几种输入输出数据的方法
      • 一.用函数putchar输出单个字符数据
      • 二.用函数getchar输入单个字符数据
      • 三.用函数printf按指定格式输出数据
        • 1.printf函数调用的一般形式
        • 2.printf函数的格式控制字符串
          • (1).格式说明符
          • (2).转义字符
          • (3).普通字符
        • 3.printf函数的几种常用输出形式
          • (1)d格式符
          • (2)c格式符
          • (3)s格式符
          • (4)f格式符
            • 基本型%f
            • %m.nf形式
            • %-m.nf形式
          • (5)e格式符
            • 基本型%e
            • %m.ne形式
            • %-m.ne形式
          • (6)转义字符
      • 四.用函数scanf按指定格式输入数据
        • 1.scanf函数调用的一般形式
        • 2.scanf函数的格式控制字符串
        • 3.使用scanf函数需要注意的几点

几种输入输出数据的方法

C语言最基本的数据输入输出函数有4个,可分为字符输入输出函数和格式化输入输出函数两类。

一.用函数putchar输出单个字符数据

putchar函数是字符输出函数,功能是在显示器上输出一个字符。使用形式为:
putchar(c);

其中:c为字符型数据或整型数据,当为整型数据时,它的值一般应是一个可见字符的ASCII码,否则没有实际意义。

#include
int main() {char c = 'A'; putchar(c);    //输出字符Aputchar('\n'); //输出换行符putchar('b');  //输出breturn 0;
}

结果:

在这里插入图片描述

注意:

putchar函数只有一个参数,一次只输出一个字符。

二.用函数getchar输入单个字符数据

getchar函数是字符输入函数,功能是读取从键盘上输入的一个字符。使用的一般形式为:

变量 = getchar();

例如:

char c;

c = getchar();

运行时从键盘输入A,则将输入字符A赋予字符变量c。

#include
int main() {char c, d;c = getchar();  //输入字符d = getchar();  putchar(c);     //输出字符putchar('\n');putchar(d);return 0;
}

结果:

在这里插入图片描述

注意:

  1. getchar函数是无参函数,但调用getchar函数时,后面的括号不能省略。getchar函数从键盘上接受一个字符作为它的返回值。
  2. getchar函数只能接受单个字符。输入多于一个字符时,只接受第一个字符。通常把输入的字符赋予一个字符变量,构成赋值语句。
  3. 在输入时,空格、换行符等都作为字符读入。而且,只有在用户按回车键时,读入才开始执行。

三.用函数printf按指定格式输出数据

printf函数称为格式化输出函数,其最后一个字母f即为”格式“(format)之意,功能是按用户指定的格式,把指定的数据默认输出到显示器屏幕上。

1.printf函数调用的一般形式

printf函数是标准库函数,其函数原型在头文件中定义,使用形式为:

printf(格式控制字符串,输出表);

例如:

printf("a = %d",a);

printf("f = %f",f);

其中,格式控制字符串由双引号作为两端界符,用于指定输出格式。输出表列由需要输出的各个数据项组成,可以是常量、变量或表达式,各输出项之间用逗号","分隔。

2.printf函数的格式控制字符串

格式控制字符串可以包含三种字符:格式说明符、转义字符和普通字符。

(1).格式说明符

格式说明符由”%“和格式字符组成,如%d,%f等,其作用是将输出的数据转换为指定的格式然后输出。

printf格式字符

格式字符意义
%d输出十进制形式的带符号整数
%u输出十进制形式的无符号整数
%o输出八进制形式的无符号整数
%x输出十六进制形式的无符号整数,使用小写字母a, b, c, d, e, f
%X与x相同,使用大写字母A, B, C, D, E, F
%f输出小数形式的单、双精度实数
%e输出指数形式的单、双精度实数,指数用e表示
%E与e相同,指数用E表示
%g以%f、%e中较短的输出宽度输出单、双精度实数,指数用e表示
%G与g相同,指数用E表示
%c输出单个字符
%s输出字符串

在格式说明符中的%和字母之间,可以使用附加修饰符。

printf附加修饰符

附加修饰符意义
-结果左对齐,右边填空格
mm是一个整数,表示数据的最小宽度
.nn是一个整数。对实数,表示输出n为小数;对字符串,表示截取的字符个数
L或l表示按长整型输出
(2).转义字符

这些字符用于在程序中描述键盘上没有的字符或某个具有复合功能的控制字符,如\n或\t。

(3).普通字符

除格式说明符和转义字符之外的其他字符,这些字符原样输出。

如:

printf("a1 = %d",a);

printf("f1 = %f",f);

中的字母a1和f1就是普通字符,它可以根据需要来使用,不是必须项。

3.printf函数的几种常用输出形式

(1)d格式符

在输出时,按十进制整数数据的实际长度输出,正数的符号不输出。

#include
int main() {int a = 10;printf("%d\n", a);printf("%5d", a);return 0;
}

结果:
在这里插入图片描述

(2)c格式符

使用c格式符,用于输出一个字符。

#include
int main() {char ch = 'h';printf("%c\n", ch);printf("%5c", ch);return 0;
}

结果:
在这里插入图片描述

一个数值范围0~255范围内的整型数据,也可以使用%c格式符按字符形式输出,输出前,系统会将该整数作为ASCII码转换为相应的字符。

同样,一个字符型数据也可以用%d格式符以整数形式输出其对应的ASCII值。

如:

#include
int main() {int a = 66;char b = 'a';printf("%c\n", a);printf("%d", b);return 0;
}

结果:

在这里插入图片描述

(3)s格式符

使用s格式符,用于输出一个字符串。

#include
int main() {printf("%s\n", "Hello,world");printf("%8s", "Hello");return 0;
}

结果:

在这里插入图片描述

(4)f格式符

使用f格式符,用于以小数形式输出一个实数。

基本型%f

使用不带附加说明符的%f输出,不指定输出数据的长度,由系统根据数据的实际情况决定所占的列数。

#include
int main() {double a = 10;printf("%f", a / 3);return 0;
}

结果:

在这里插入图片描述

说明:

a是双精度型,a/3的结果也是双精度型,但是用基本型%f格式则只能输出6位小数。

%m.nf形式

可以指定数据宽度和小数位数。

m表示该浮点数整体所占的列数,包括整数部分、小数点和小数部分;

n表示该浮点数中小数部分所占的列数,

#include
int main() {double a = 10;printf("%10.3f", a / 3);return 0;
}

在这里插入图片描述

注意:

在用%f格式符输出时要注意数据本身能提供的有效数字,float类型的存储单元只能保证6位有效数字。double类型的数据可以保证15位有效数字。但是超过这个长度的单精度和双精度数据都不能保证其精确度。

%-m.nf形式

%-m.nf形式输出的含义与%m.nf相同,但是数据左对齐,右端补空格。

(5)e格式符

使用e格式符,用于以指数形式输出一个实数。

基本型%e

使用不带附加说明符的%e输出,不指定输出数据的长度和小数部分的位数。

#include
int main() {printf("%e", 123.456);return 0;
}

结果:

在这里插入图片描述

%m.ne形式

用%m.ne形式可以指定数据宽度和小数部分的位数。

#include
int main() {printf("%13.4e", 123.456);return 0;
}

在这里插入图片描述

%-m.ne形式

%-m.ne形式输出的含义与%m.ne相同,但是数据左对齐,右端补空格。

(6)转义字符

如果想输出字符”%“,在”格式控制“字符串中用连续两个%表示。

如果想输出字符”\“,在”格式控制“字符串中用连续两个\表示。

如果想输出字符单引号或双引号,在”格式控制“字符串中用’或\”表示。

#include
int main() {printf("\"Hello,world\"\n");printf("12%%");return 0;
}

结果:
在这里插入图片描述

四.用函数scanf按指定格式输入数据

1.scanf函数调用的一般形式

使用形式:

scanf(格式控制字符串,输入项地址表);

例如:

scanf("%d%f",&i,&f1);

其中,格式控制字符串由双引号作为两端界符,用于指定输入格式。输入项地址表由若干个地址组成,相邻两个输入项地址之间用逗号分开。

输入项地址表中的地址,可以是变量的地址,也可以是字符数组名或指针变量。

变量地址的表示方法为“&”变量名,其中“&”是取变量地址运算符。

2.scanf函数的格式控制字符串

scanf函数的格式控制字符串可以包含三种字符:格式说明符、空白符和非空白符。

(1)格式说明符:用来指定数据的输入格式。

(2)空白符:包括空格、制表符和换行符,通常作为相邻两个输入数据的缺省分隔符。

(3)非空白符:又称普通字符。在输入有效数据时,必须原样输入。

与printf函数的格式说明符相似,scanf的格式说明符也由“%”和格式字符组成。

scanf格式字符

格式字符意义
%d输入十进制形式的带符号整数
%u输入十进制形式的无符号整数
%o输入八进制形式的无符号整数
%x输入十六进制形式的无符号整数,使用小写字母a, b, c, d, e, f
%X与x相同,使用大写字母A, B, C, D, E, F
%f %e %E %g %G以小数或指数形式输入单精度实数
%c输入单个字符
%s输入字符串

scanf附加修饰符

附加修饰符意义
*跳过该输入项,不赋值
l输入长整形数据以及双精度实型数据
h输入短整型数据
mm是一个整数,指定输入的宽度
#include
int main() {int a, b, c;printf("请输入a,b,c的值:");scanf("%d %*d %d %d", &a, &b, &c);printf("s1 = %d,s2 = %d,s3 = %d", a + b, b + c, a + b + c);return 0;
}

结果:

在这里插入图片描述

3.使用scanf函数需要注意的几点

  1. scanf函数中要求输入项地址,应为地址格式,而不是变量名。例如:scanf("%d",a);是非法的,应为scanf("%d",&a);

  2. scanf函数中无精度控制。例如:scanf("%5.2f",&a);是不合法的,而scanf("%5f",&a);是合法的,其中5位输入数据宽度。

  3. 当输入的数据类型为多个数值型数据时,若相邻两个格式指示符之间没有分隔符(如逗号,冒号等),则相应的两个输入项之间可用的分隔符有三种:空格、制表符或换行符。

  4. 当输入的数据类型为字符型数据时,则认为所有输入的字符均为有效字符,特别地,空格和换行符等都作为有效字符被输入。

    例如:scanf("%c%c%c"&a,&b,&c);

    当输入为d e时,则把字符d赋值为a,变量b和c的值为空格。

  5. 在格式控制字符串中出现的普通字符,务必原样输入。

    例如:scanf("%d,%d,%d"&a,&b,&c);

    在运行时输入应为1,2,3

  6. 输入数据时,遇到以下情况时系统认为该数据输入结束:

    (1)遇到空格、制表符或换行符。

    (2)遇到非法输入。

    (3)遇到输入域宽度结束。例如:scanf("%3d",&a);输入数据只取三列。

相关内容

热门资讯

2026别盼房价崩盘了!楼市分... 家人们,2026年开年就有个房产大V的言论炸了锅!说什么“房价跌了不用慌,家比房子值钱”,劝大家别再...
深圳龙岗:筑牢寄递防毒线,赋能... 为应对寄递渠道涉毒风险,提升一线从业者主动防御能力,一场别开生面的“筑牢寄递防毒线”沉浸式禁毒培训,...
20万颗卫星引爆A股,泼天富贵... 上周末最大的新闻,那还是属于航天。 倒不是谁又发火箭了,而是:中国一口气申请了超20万颗卫星! 如果...
恶意退货、“买真退假” 网购乱... 网购是如今很多人买衣服的主要方式,很多平台上也都有“七天无理由退货”的规则,让消费者可以放心买、放心...
解码基金“擒牛术”:布局十倍股... 证券时报基金研究院 匡继雄 刚刚过去的2025年,主动权益基金赛道跑出“现象级”赢家:永赢基金任桀管...
国家发改委原副主任扶持公司上市... 由中央纪委国家监委宣传部与中央广播电视总台央视联合摄制的电视专题片《一步不停歇 半步不退让》,于1月...
A股头条:商业航天又迎利好!中... 资讯速递 1、中国对日稀土出口许可审查被暂停?外交部回应 外交部发言人毛宁1月12日主持例行记者会。...
盘前必读丨中概股爆发金龙指数大... 【财经日历】 美国2025年12月CPI 2026三亚.国际种业科学家大会暨国际种业科技博览会(1/...
豪威集团“A+H”上市总市值1... 来源:长江商报 长江商报消息 ●长江商报记者 沈右荣 “芯片富豪”虞仁荣斩获了第三个IPO。 1月...
马斯克炮轰苹果谷歌联手打磨Si... IT之家 1 月 13 日消息,埃隆・马斯克(Elon Musk)今天(1 月 13 日)在 X 平...
原创 卖... 我朋友前年在城市边缘的新区买了个32层高层,是时下最流行的设计,精装修,会所配套一应俱全,那时候他还...
黄金站上4600美元再创新高,... 1月12日亚洲早盘,COMEX黄金期货价格直线拉升,站上每盎司4600美元,时隔两周再度刷新历史新高...
顺灏股份:投资轨道辰光事项对公... 人民财讯1月12日电,顺灏股份(002565)1月12日发布股票交易严重异常波动的公告,公司关注到近...
治疗白癜风无秘密?关键在“耐心... 在白癜风的治疗过程中,不少患者急于看到效果,四处寻求所谓的“治疗秘密”或“捷径”。但从临床诊疗经验来...
突发!商业航天牛股,停牌核查 1月12日晚,*ST铖昌公告称,公司股票交易连续10个交易日内4次出现同向股票交易异常波动情形,属于...
原创 女... 在探讨女性情感经历的复杂性时,我们不得不提到一个经常被提及的话题——恋爱次数。这不仅是一个关于个人成...
原创 对... 少年时阅读历史时,我们常常为项羽的失败感到困惑。他这位勇敢直接的青年,怎么会败给刘邦那个看似不怎么样...
英伟达与礼来共投10亿美元 建... 财联社1月13日讯(编辑 牛占林)英伟达与美国制药巨头礼来当地时间周一宣布,双方将在未来五年内投入1...
2026年做什么行业赚钱有前景... 站在2026年这个时间节点上,很多人明显感觉到,钱变得“聪明”了,也变得更难赚了。 过去那种靠信息差...
10亿基金落地 背靠广州工控庞... 观点网 近日,广州工控图南创业投资基金顺利完成备案,正式进入实质性运营阶段。 该基金由工控科创集团发...