几种输入输出数据的方法

几种输入输出数据的方法

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

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

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

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

#include<stdio.h>
int main() {
	char c = 'A'; 
	putchar(c);    //输出字符A
	putchar('\n'); //输出换行符
	putchar('b');  //输出b
	return 0;
}

结果:

在这里插入图片描述

注意:

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

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

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

变量 = getchar();

例如:

char c;

c = getchar();

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

#include<stdio.h>
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函数是标准库函数,其函数原型在头文件<stdio.h>中定义,使用形式为:

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<stdio.h>
int main() {
	int a = 10;
	printf("%d\n", a);
	printf("%5d", a);
	return 0;
}

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

(2)c格式符

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

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

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

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

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

如:

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

结果:

在这里插入图片描述

(3)s格式符

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

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

结果:

在这里插入图片描述

(4)f格式符

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

基本型%f

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

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

结果:

在这里插入图片描述

说明:

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

%m.nf形式

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

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

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

#include<stdio.h>
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<stdio.h>
int main() {
	printf("%e", 123.456);
	return 0;
}

结果:

在这里插入图片描述

%m.ne形式

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

#include<stdio.h>
int main() {
	printf("%13.4e", 123.456);
	return 0;
}

在这里插入图片描述

%-m.ne形式

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

(6)转义字符

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

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

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

#include<stdio.h>
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<stdio.h>
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);输入数据只取三列。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值