c语言 终端用户输入字符,C语言学习 - 输入输出

输入输出的概念

标准的输出指屏幕终端,标准的输入指键盘,其它的输入输出可以是文件、打印机、扫描仪等设备。

在C语言中,所有的数据输入输出都是由库函数完成的,在使用标准输入输出函数库时要用到stdio.h文件,因此源文件开头要使用预处理指令#include将其包括进来:

格式: #include

printf函数

printf函数称为格式输出函数,其功能是按用户指定的格式把指定的数据输出。

printf函数是一个标准函数库,其函数原型声明在头文件stdio.h中。

printf函数语法:printf("格式控制字符串", 输出列表);

I. 格式控制字符串用于指定输出格式,可由格式字符串和非格式字符串两种组成。

II. 格式控制字符串是以%开头的字符串,在%后面跟各种格式字符,以说明输出数据的类型、形式、长度、小数位等,即:%[标志][输出最小宽度][.精度][长度]类型。

【标志】:

-:结果左对齐,右边填空格。

+:输出符号(正号或负号)。

空格:输出值为正时冠以空格,为负时冠以负号。

#:对c、s、d、u类无影响;对o类,在输出时加前缀o;对x类,在输出时加前缀0x;对e、g、f类,当结果有小数时才给出小数点。

【输出最小宽度】:

用十进制整数来表示。

若实际位数多于定义的宽度,则按实际位数输出,若实际位数小于定义的宽度,则补以空格或0,如:%05d(宽度5位,以0补全)、%5d(宽度5位,以空格补全)。

【.精度】

精度格式以.开头,后跟十进制整数。

此项意义为:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分(四舍五入)。

【长度】:

格式符为h、l、L三种,h表示按短整型输出,l表示按长整型输出,L表示按长双精度型输出。

【类型】:

d:以十进制形式输出带符号整数(正数不输出符号)。

o:以八进制形式输出无符号整数(不输出前缀0)。

x,X:以十六进制形式输出无符号整数(不输出前缀Ox)。

u:以十进制形式输出无符号整数。

f:以小数形式输出单、双精度实数。

e,E:以指数形式输出单、双精度实数。

g,G:在%f和%e之间自动选择(选择较短的输出宽度)输出单、双精度实数。

c:输出单个字符。

s:输出字符串。

III. 非格式字符串在输出时按照原样输出。

IV. 输出列表中给出了各个输出项,格式控制字符串和各输出项在数量和类型上应该一一对应。

*的用法:

#include

int main(void)

{

int a, b;

float c = 555.555;

scanf("%d%d", &a, &b);

// 第一个*指变量a,表示输出最小宽度;第二个*指变量b,表示精度;0表示不满输出最小宽度时,以0补全

printf("c:%0*.*f\n", a, b, c);

return 0;

}

以上程序运行示例:

[root@izbp1ezvecfb1wm1s1l8ggz c_code]# gcc -Wall -O2 -o printf_test printf_test.c

[root@izbp1ezvecfb1wm1s1l8ggz c_code]# ./printf_test

9 4

c:0555.5550

scanf函数

scanf函数称为格式输入函数,其功能是按用户指定的格式从键盘上把数据输入到指定的变量之中。

scanf函数是一个标准函数库,其函数原型声明在头文件stdio.h中。

scanf函数语法:printf("格式控制字符串", 地址列表);

I. 格式控制字符串用于指定输入格式。

II. 格式控制字符串是以%开头的字符串,在%后面跟各种格式字符,以说明输入数据的宽度、长度、类型,即:%[输入数据宽度]长度]类型。

【输入数据宽度】:

用十进制整数来表示。

若实际输入宽度超过指定宽度,则多余部分被截去。

【长度】:

格式符为h、l、L三种,h表示按短整型输入,l表示按长整型输入,L表示按长双精度型输入。

【类型】:

d:输入十进制整数。

o:输入八进制整数。

x,X:输入十六进制整数。

u:输入无符号十进制整数。

f,e,E,g,G:输入浮点数(以小数形式或者指数形式)。

c:输入单个字符。

s:输入字符串。

III. 地址列表中给出各变量的地址,地址是由地址运算符&后跟变量名组成(数组不需要地址运算符&,数组名即是地址)。

普通变量形式:

#include

int main(void)

{

int a, b;

printf("please input height and width:");

scanf("%d%d", &a, &b);

printf("a:%d \n", a);

printf("b:%d \n", b);

return 0;

}

数组形式:

注意:使用scanf函数无法读取带空格的输入字符串,若需读取带空格的输入字符串,可以使用fgets函数。

#include

int main(void)

{

char a[20];

printf("please input a word:");

scanf("%s", a);

printf("a:%s \n", a);

return 0;

}

一次输入多个值(多个值之间使用空格分隔):

#include

int main(void)

{

char a, b;

printf("please input two character:");

// 两个%c之间需使用空格隔开,或者第二个字符将读取两个输入值之间的空格符

scanf("%c %c", &a, &b);

printf("a:%c\n", a);

printf("b:%c\n", b);

return 0;

}

输入多次内容:

#include

int main(void)

{

int a;

char b;

printf("please input a number:");

scanf("%d", &a);

// 因第一次输入完成后会按回车,因此这里需要使用getchar函数读取回车\n,否则将把回车\n直接赋给变量b

getchar();

printf("please input a character:");

scanf("%c", &b);

printf("a:%d\n", a);

printf("b:%c\n", b);

return 0;

}

*的用法:

#include

int main(void)

{

int a;

// 这里的*表示跳过,因此这里将跳过前2个的输入数据,将第三个输入数据复制给变量c

scanf("%*d %*d %d", &a);

printf("a:%d\n", a);

return 0;

}

以上程序运行示例:

[root@izbp1ezvecfb1wm1s1l8ggz c_code]# gcc -Wall -O2 -o printf_test printf_test.c

[root@izbp1ezvecfb1wm1s1l8ggz c_code]# ./scanf_test

1

2

3

a:3

[root@izbp1ezvecfb1wm1s1l8ggz c_code]# ./printf_test

1 2 3

a:3

fgets函数

fgets函数功能是从指定的流stream读取一行,并把它存储在指定的字符串内。当读取(n-1)个字符,或者读取到换行符,或者到达文件末尾时,它会停止,具体视情况而定。

fgets函数是一个标准函数库,其函数原型声明在头文件stdio.h中。

fgets函数语法:fgets("字符数组地址", "最多字符数", "从中读取字符的流");

【字符数组地址】:

数组名即是字符数组地址

【最多字符数】:

用十进制整数来表示。

通常使用字符数组的长度。

【从中读取字符的流】

可以是指向FILE对象的指针,或者标准输入stdin。

#include

int main(void)

{

char a[20];

printf("please input a sentence:");

// stdin指标准输入,一般是从输入设备如键盘的缓冲区输入

fgets(a, sizeof(a)-1, stdin);

printf("a:%s \n", a);

return 0;

}

以上程序运行示例:

[root@izbp1ezvecfb1wm1s1l8ggz c_code]# gcc -Wall -O2 -o printf_test printf_test.c

[root@izbp1ezvecfb1wm1s1l8ggz c_code]# ./fgets_test

please input a sentence:This is a dog.

a:This is a dog.

注意:因为输入完成后按回车表示结束,因此最后打印了一行空行。

getchar函数

getchar函数是键盘输入函数,从键盘上输入一个字符,通常再将其赋予一个字符变量。

getchar函数是一个标准函数库,其函数原型声明在头文件stdio.h中。

getchar函数只能接受单个字符,若输入的是数字,也按字符处理;输入多于一个字符时,只接受第一个字符。

getchar函数使用:char 字符变量 = getchar()

#include

int main(void)

{

char a = getchar();

printf("a:%c\n", a);

return 0;

}

putchar函数

putchar函数是字符输出函数,在屏幕终端上输出单个字符,并且返回输出的字符。

putchar函数是一个标准函数库,其函数原型声明在头文件stdio.h中。

getchar函数使用:

#include

int main(void)

{

char a;

printf("please input a character\n");

a = getchar();

char b = putchar(a);

// 输出换行符时必须使用单引号包括

putchar('\n');

printf("b:%c\n", b);

return 0;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值