欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言基础(2)——基本输入输出

程序员文章站 2022-05-12 15:47:51
...


C语言中的输入输出操作是通过调用标准函数库函数来实现的。使用这些标准输入输出函数时,将输入输出函数的头文件stdio.h包含到源文件中,即在开始位置加上如下编译命令:
#include<stdio.h>

1.字符输入输出函数

字符输入和输出函数分别为getchar()和putchar()。

putchar函数

函数的功能是把函数参数ch输出到屏幕当前光标位置。其中ch可以是字符型或整型变量或常量,也可以是转义字符。例如:

#include<stdio.h>
int main()
{
    char a='s';
    int i=115;
    
    putchar(a);
    putchar('\n');
    
    putchar('s');
    putchar('\n');
    
    putchar(i);      /*字符s的ASCII码为115,输出字符s*/
    putchar('\n');
    
    putchar(115);
    putchar('\n');
    
    return 0;
}

程序运行结果为:

s
s
s
s

从上面程序也可以看出来,一个putchar函数只能输出一个字符
注意:
函数参数若只是整型变量或者常量,要求其值范围在0~255。如果参数的值大于255,例如:
putchar(353);
因为353超过了字符数据的储存范围,编译器会将353转换为353-256=97,则上述语句等价于:
putchar(97);

getchar函数

#include<stdio.h>
int main()
{
    char a,b,c;
    a=getchar();    /*接受用户从键盘输入的一个字符,赋值给变量a*/
    b=getchar();
    c=getchar();
    putchar(a);
    putchar(b);
    putchar(c);
    putchar('\n');
    return 0;
 }

程序运行输入:
hml↙
输出:
hml
从上述程序可以看出getchar()函数功能是从键盘输入一个字符。该函数无参数,但括号不能省略。
对于上述程序,如果我按如下方式输入,会出现什么情况呢?
h m l↙
没错,我输入时,在每个字符之间加了空格。然而程序输出却如下:
h m
为什么会出现上述情况?
当程序运行输入h m l时,字符‘s’送到字符变量a中,空格‘ ’送到字符变量b中,字符‘m’就送到了字符变量c中。因此,执行三个putchar函数后输出h m也是理所当然了。

2格式化输入输出函数

格式输出函数printf

(1)如果原样输出字符,输出格式可以表示为:
printf(“需要原样输出的字符”);
例如:
printf("微信关注公众号技术菌团");
(2)格式输出函数printf的格式为:
printf(“格式控制”,输出值参数表);
其中,“格式控制”是使用双引号括起来的字符串,也称为转换控制字符 串。输出值参数中可以有多个输出值。
格式控制说明符:由“%d”和格式字符组成。
C语言基础(2)——基本输入输出
C语言基础(2)——基本输入输出

int i;
char c;
printf("%d,%c\n",i,c); /*'\n'是换行符*/

"%d,%c\n"为格式控制部分。其中’,'是普通字符,按原样输出。
输出值参数表中有两个输出参数,分别为i和c。参数i对应%d,对照上述格式转换说明符图表,即带符号十进制整数形式输出,输出参数c对应%c,即以字符形式输出。
格式转换说明符用于指定各输出参数的输出形式。输出值参数表中的各参数数据类型应与格式转换说明符相匹配。原则上,输出值参数表的各个参数的个数和类型应与格式转换说明符中指定的数据个数和类型应一致,且从左到右一一对应。
想对输出格式进行微调整怎么办?
在printf()的格式转换说明符中,在%d和格式字符之间的位置,可以根据需要插入修饰符。如下图所示printf()函数格式转换说明符中的修饰符:
C语言基础(2)——基本输入输出
表 2 printf()函数格式转换说明符中的修饰符

下图是输出函数示例程序
表 3 输出函数示例程序

格式输入函数scanf

格式输入函数scanf格式为:
scanf(“格式控制”,参数地址表);
“格式控制”是使用双引号括起来的字符串,也称为转换控制字符串。
格式转换说明符同样是以“%d”和格式字符组成。如下表:
C语言基础(2)——基本输入输出
表 4 函数scanf()的格式转换说明符

例如:

int i;
char c;
scanf("%d,%c",&i,&c);

参数地址表中有两个地址,分别为i的地址&i和c地址&c。用户输入的第一个数据以整型形式存放到地址为&i的整型变量i中,用户输入的第二个数据以字符型存放到地址为&c的字符变量c中。
C语言基础(2)——基本输入输出
表 5 scanf()函数格式转换说明符中的修饰符
函数scanf()没有精度.n格式修饰符,即用函数scanf()输入实型数据时不能规定精度。