在C语言中,输入输出函数有着相当重要的地位,它是我们的程序与用户交互的唯一途径,现在我就将C语言中比较常见的几个输入输出函数介绍给大家,以下这些讲解都是针对VC调试平台。
从策划到设计制作,每一步都追求做到细腻,制作可持续发展的企业网站。为客户提供成都网站建设、成都做网站、网站策划、网页设计、域名申请、雅安服务器托管、网络营销、VI设计、 网站改版、漏洞修补等服务。为客户提供更好的一站式互联网解决方案,以客户的口碑塑造优易品牌,携手广大客户,共同发展进步。
(一) 格式化输入输出函数
(1)scanf( )格式化输入函数
格式输入函数scanf( )函数,它的格式为scanf(“格式字符串”,输入列表)。“格式字符串”包含三种类型的字符:a、格式字符,以%开头的字符,用以说明输入列表的数据以何种类型及格式的形式输入。b、普通字符,要求在输入时必须原样一起输入的字符。C、空白字符(空格、跳格键、回车键)作为相邻两个数据的默认分隔符。
在scanf( )函数中有以下地方需要注意:
[1] 在scanf()函数中的格式字符串不存在转义字符,所以:格式字符串中的字符除了格式字符外全部都要原样输入。
如:
int a;
scanf(“%d\n”,a);如果我们想把10赋值给a,就需要在键盘上输入的是:
10\n回车,才能把10赋值给a,这里\n已经不是转义字符,而是普通字符。
[2] 输入列表的变量如果是基本类型(即整型、实型、字符型)一定要使用取地址符(输入字符串到字符数组的情况除外),而且后必须是变量,不允许是常量或表达式。
如:
int a,b;
scanf("%d%d",a,b); 这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“a”指a在内存中的地址。
[3] 输入数据时,企图规定精度
float a;
scanf("%.2f",a);
这样做是不合法的,输入数据时不能规定精度,这里要记住一个程序是不能控制操作它的人来输入数据的精度的。
[4] 输入数据的方式与要求不符
① scanf("%d%d",a,b);
输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:3,4 输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。
②scanf("%d,%d",a,b);
C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。下面输入是合法的:3,4
此时不用逗号而用空格或其它字符是不对的。3 4
又如:scanf("a=%d,b=%d",a,b);
输入应如以下形式:a=3,b=4
[5] 输入字符的格式与要求不一致
在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。
scanf("%c%c%c",c1,c2,c3);
如输入a b c
字符“a”送给c1,字符“ ”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。
[6] 使用格式字符”%c”录入单个字符时,空格和回车键等字符都会作为有效字符输入,所以需要注意fflush(stdin)的使用。
[7] 注意输入列表中的元素的个数要与格式字符串中的格式字符个数相同。
[8] 在输入长整形数据和双精度浮点数时,必须使用长度修饰符”l”。
[9] 不要在不该使用取地址符的地方使用取地址符。
如:char str[10];
Scanf(%c,str);这里不应该加取地址符。
(2)printf( )格式输出函数
格式输出函数printf( ),它的格式为printf(“格式字符串”,输出列表)。这里的格式字符串也包含三种类型的字符,但这里和scanf( )函数的字符稍有不同。这三种类型的字符分别是:a、格式字符,以%开头的字符,用以说明输出列表的数据以何种格式的形式输出。B、转义字符,提供特殊的格式化控制,由一个“\”和一个字符组成。反斜杠会使printf( )函数以特殊的方式解释一个字符。C、普通字符,除格式字符和转义字符外的其他字符。
在printf( )函数中有以下地方需要注意:
[1] 输出列表由若干个输出项组成,输出项可以是常量、变量,也可以是表达式。
[2] 格式字符串中的格式字符要与后边输出列表中的元素类型一一对应。
如:
float a=1.9999;
printf("%d",a);最终的输出结果是一些乱码。
再如:
int a=12;
printf("%f",a);最终的输出结果是0.000000,这里没有进行类型转换。
但是,如果想把上面的整数a以浮点数的形式输出,必须进行强制类型转换。如:
int a=12;
printf("%f",(float)a);输出的结果是12.000000。
[3] 格式字符串中的格式字符的个数要与输出列表中的元素个数相同。
如:
int a=12;
printf("%d, %d",a);将在屏幕上输出一个12以及一个乱码。
[4] 在以%.nf这样的格式进行输出浮点数时,有四舍五入。
如:
float a=1.9999;
printf(“%.2f”,a);最终的输出结果是2.00。
[5] 长度修饰符“l”在输出长整形数据时可不要,因为在VC中,long和int占用的字节长度都是4,所有可以不加上“l”。
[6] 格式符%±nd中,n表示一个十进制整数输出时在屏幕上占n个字符的宽度,如果n前面是+号,则表示输出的整数右对齐,那么输出的整数左边补空格;如果n前面是-号,则表示输出的整数左对齐,输出的整数右边补空格。
[7] 在-128~127之间的整数可以以字符的格式输出,字符也可以以整型的格式输出。
如:
int a=97;
printf("%c",a);输出的结果是’a’,因为‘a’存储在内存中是以ASCII码的形式存储的。
再如:
char a='a';
printf("%d",a);输出的结果是97,原因同上。
(二) 单字符输入、输出函数
C语言提供了两个无格式控制的,专门用于输入、输出单个字符的函数getchar( )和putchar( )。
(1) 单字符输入函数getchar( )
[1] getchar( )函数没有参数,有返回值,返回的就是输入的那个字符。
[2] getchar( )函数一次只能接收一个字符。
[3] getchar( )函数同样将空格和回车键等字符都会作为有效字符输入,所以注意和fflush(stdin)函数的结合使用。
(2) 单字符输出函数putchar( )
[1] putchar()函数有参数,无返回值。参数就是它要输出的那个字符,可以是字符变量或着字符常量
[2] putchar()函数一次向显示器输出一个字符。
(三) 字符串输入、输出函数
C语言还提供了两个无格式控制的专门对字符串处理的函数,gets( )和puts( )。
(1) gets( )用来接收用户输入的字符串,这是个有参数的函数,参数是一个字符数组类型,输入的字符串通过传址的方式传到这个字符数组中。
(2) puts()用来向用户显示一个字符串,它需要一个字符串参数,显示该参数并自动换行。
如:
puts(“hello, world.”);与printf(“hello,world.\n”);的效果相同,如果是puts(“hello.world.\n”)则要输出两个换行。也就是说,puts( )中的字符串可以包含转义字符。
输入字符串:
scanf("%s",in_buff);
——可以格式化输入;第二个参数是地址,可以是字符指针或者字符数组;不提供字符数组数据越界检查;以回车结束输入。
gets(in_buff);
——参数为地址,可以使字符指针或者字符数组;不提供字符数组越界检查;以回车结束输入。
fgets(in_buff,BUFFER_SIZE + 1,stdin);
——参数1为字符指着或者字符数组,参数2为要输入的字符个数,+1表示字符串结束标志,参数3为标准是输入;提供越界检查,以buffer_size+1为标准;以回车结束输入。
输入字符:
getch();
——从控制台读取一个字符,但是不回显在屏幕上;不需要回车结束。
getche();
——从控制台读取一个字符,回显屏幕;不需要回车结束。
getchar();
——从控制台读取一个字符,回显屏幕;需要回车结束(如果连续使用该函数,要注意下次调用该函数,会读取上次输入的回车符)。
scanf("%c",char *);
——从控制台读取一个字符,回显屏幕;需要回车结束(注意事项同上)。
这就是C语言中常用到的几个输入输出函数,而且这几个函数都包含在stdio.h头文件中。在这几个函数中,格式输入输出的用途最多也最容易出问题,希望提起大家的注意。
一:格式输出函数printf()
1、调用形式一般为:printf("格式化控制字符串",输出表列);
2、格式化控制字符串用于指定输出格式,它有三种形式:
1、格式说明符:规定了相应输出表列内容的输出格式,以%打头,如%d、%o等
2、转义字符:用来输出转义字符所代表的控制代码或者特殊字符,比如常用的‘\n'、‘\t'
3、普通字符:需要原样输出的字符。
3、输出表列为若干需要输出的数据项,它与格式说明符在数量和类型上一一对应;
4、格式字符m指定输出数据所占宽度,n对实数表示输出n位小数,对字符串表示截取的字符个数,+表示右对齐,通常省略。
—表示左对齐,l用于长整型数据,可加在d、o、x、u前,更多格式说明符及其组合形式如下所示:
格式字符
数据对象
输出形式
数据输出方法
%(+)-md
int
unsigned
int
short
unsigned
short
char
十进制整数
1、无m按实际位数输出
2、有m输出m位;超过m位,按实际位数输出,不足补空格
3、有+(默认为+)右对齐(左补空格)
4、有-左对齐(右补空格)
%(+)-mo
八进制整数
%(+)-mx
十六进制整数
%(+)-mu
无符号整数
%(+)-mld
long
unsigned
long
十进制整数
%(+)-mlo
八进制整数
%(+)-mlx
十六进制整数
%(+)-mlu
无符号整数
%(+)-m.nf
float
double
十进制小数
%(+)-m.ne
十进制指数
%(+)-g
自动选用%f和%e中较短的输出宽度输出单、双精度浮点数
%(+)-mc
char
int
short
单个字符
1、无m输出单个字符
2、有m输出m位,补空格
3、有+(默认为+)右对齐(左补空格)
4、有-左对齐(右补空格)
%(+)-m.ns
字符串
一串字符
1.无m、n按实际字符串输出全部字符
2、有m、n仅输出前n个字符,补空格
3.有+(默认为+)右对齐(左补空格)
4、有-左对齐(右补空格)
二:格式输入函数scanf()
1、
调用格式一般为:scanf("格式化控制字符串",地址表列);
2、格式化控制字符串和printf()函数含义相似,所不同的是它是对输入格式进行控制;
3、地址表列是有若干等待输入的数据所对应的内存单元地址组成,由逗号隔开,一般形式为a,a为变量;
4、地址表列在数量和类型上和格式化控制字符串中的格式说明符一一对应;
5、格式字符h表示输入短型数据,可用在d、o、x前面,m指定输入数据所占宽度,
*表示对应的数据项读入后不赋给相应的变量,更多格式说明符及其组合如下
格式字符
数据对象
输入形式
数据输入方法
%md
int
short
unsigned
int
unsigned
short
十进制整数
1、无m按实际位数输入
2、有m输入m位,不足m则跟回车键
%mo
八进制整数
%mx
十六进制整数
%mld
long
unsigned
long
十进制整数
%mlo
八进制整数
%mlx
十六进制整数
%mlf
float
double
十进制整数
%mle
%mc
char
单个字符
1、无m取单个字符
2、有m输入m位,仅取第一个字符
%ms
字符串
一串字符
1、无m取回车或空格前若干字符
2、有m仅取前m字符
2.putchar() getchar() 输出输入函数只针对单个字符的操作。3.puts(),gets() 输出输入函数可以单个字符操作(但是功能有限的),主要是针对字符串操作。 下面我们定义int a用scanf("%d",a)可以获取整型a的值,a=getchar(),gets(a)无法从键盘获取数字用printf("%d",a)可以打印数字a的值,putchar(a),puts(a)没法打印数字方面:printf()和scanf()胜char a用scanf("%c",a) 可以获取字符a的值,用a=getchar()能获取a的值,用gets(a)不能获取用printf("%c",a)可以打印字符a的值 用a=getchar()可以打印a的值,用puts(a)不能打印字符方面:getchar()和putchar()第1 scanf()和printf()第2 gets和puts()败补充:puts()和gets()能接收和打印单个字符只限制变量是数组变量例如 char a[50]; gets(a); put(a);你输入一个字符就会打印一个字符但如果是字符变量 char a='x'; char a; puts(a); 或 gets(a); puts(a);就无法运行char a[50]用scanf("%s",a)能获取数组a的值,用a=getchar()无法获取,用gets(a)能获取a的值用printf("%s",a)能打印数组a的值 用putchar(a)无法打印,用puts(a)能打印a的值字符串(数组)方面:gets()和puts()第一,scanf()和printf()第2,getchar()和putchar()败可见scanf()和printf()什么都能实现,但对字符和字符串操作没有其他两种好getchar()和putchar()对字符操作优势明显,但不能操作数字变量,字符数组变量gets()和puts()对字符串操作优势明显,但也不能操作数字变量,字符变量scanf()和printf()格式输入输出能同时按格式一起输入输出字符,数字,字符串这是其他两种不能比的所以程序以scanf()和printf()为主,其他两种作为辅助,发挥各自的长处。最后来个总结,用程序表示#include stdio.hmain(){ char a,b[50]; printf("请输入第一个字符:\n"); scanf(" %c",a); getchar(); //获取前面的回车 printf("第一个的字符为:%c\n",a); printf("请输入第二个字符:\n"); a=getchar(); printf("第二个字符为:"); putchar(a); putchar('\n'); printf("请输入第一个字符串:\n"); scanf(" %s",b); getchar(); //获取前面的回车 printf("第一个的字符为:%s\n",b); puts("请输入第二个字符串:"); gets(b); puts("第二个字符串为:"); puts(b); }
常用的输出控制符主要有以下几个:
因为计算机中所有的数据都是二进制 0、1 代码,所以输出的时候要用“输出控制符”告诉计算机以什么形式将二进制数据显示出来。
输出控制符中,%d、%f、%s、%c 是最常用的,它们分别是输出整数、实数、字符串和字符的控制符。%.mf 虽然用得不多,但一定要重视。
扩展资料:
C语言的输出函数:
1、printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。
2、printf()函数的调用格式为: printf("格式化字符串", 参量表)。
3、格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。
4、作用:在c语言中产生格式化输出的函数(定义在 stdio.h 中),其向终端(显示器、控制台等)输出字符。
参考资料来源:百度百科-C语言
C语言是我们经常使用的编程语言,那么如何运用C语言输出字符呢?下面我给大家分享一下。
工具/材料
dev c++
01
首先点击文件菜单,然后选择新建下面的项目,如下图所示
02
接下来在弹出的新建项目界面中我们选择C语言,如下图所示
03
然后我们在main函数中声明一个字符,如下图所示
04
最后我们用print函数对字符进行输出即可,如下图所示
putchar 函数是字符输出函数, 其功能是在显示器上输出单个字符。其一般形式是putchar(字符变量),对控制字符则执行控制功能,不在屏幕上显示。
fprintf()、fscanf()、fgets()和fputs()
举例
fprintf(fp,"%s",words);
fscanf(fp,"%s",words);
fgets(buf,MAX,fp);//buf 是一个char数组的名称,MAX是字符串的最大长度,fp是一个FILE指针。
fputs(buf,fp);//buf是一个char数组的名称,fp是一个FILE指针。
扩展资料:
传递函数概念的适用范围限于线性常微分方程系统.当然,在这类系统的分析和设计中,传递函数方法的应用是很广泛的。下面是有关传递函数的一些重要说明(下列各项说明中涉及的均为线性常微分方程描述的系统):
1、系统的传递函数是一种数学模型,它表示联系输出变量与输入变量的微分方程的一种运算方法;
2、传递函数是系统本身的一种属性,它与输入量或驱动函数的大小和性质无关;
3、传递函数包含联系输入量与输出量所必需的单位,但是它不提供有关系统物理结构的任何信息(许多物理上完全不同的系统,可以具有相同的传递函数,称之为相似系统);
参考资料来源:百度百科-传递函数