汉扬编程 编程大纲 C语言常用的输入输出函数

C语言常用的输入输出函数

C语言的基本单位是语句,每条语句都是用来向计算机发送操作指令,但有时需要程序在运行过程中,需要用户自己手动输入数据,并且得到运行结果,那么这时输入输出函数就起到了作用。下面一一介绍C语言提供的各种输入输出函数,至于文件的输入输出函数在这里暂不做讨论,以后将会介绍。

C语言常用的输入输出函数

C语言常用的输入输出函数

一、putchar函数:

C语言常用的输入输出函数

putchar(int ch)函数是字符输出函数,其作用是向终端输出一个字符,等同于printf(\”%c\”,ch),函数的定义形式为:int putchar(int ch),其参数可以是字符型变量、整形变量或常量,如输出一个字符putchar(\’s\’)。该函数若输出正确,则返回输出字符的无符号整形数值,如果输出错误则返回EOF。

二、getchar()函数:

字符数据输入可使用getchar函数(不带参数),当然了有时也可以使用getch函数和getche函数,但是有所区别,下面会介绍它们之间的区别,其作用可以从输入缓存区中顺序读取一个字符。

测试程序只写出主要代码:

char s,m;

s=getchar();

putchar(s); ①

m=getchar(); ②

putchar(m);

上面代码在输入完一个字符后(如\’g\’),由于需要确定输入结束需要按回车键确定,所以当把字符g赋给s后,字符回车便被送入到内存缓存区中,上面说到该函数会从缓存区中读取字符,因此第二个会直接从缓存区中读走回车符,因此m就被赋予回车这个字符,这往往跟当初的设定的结果不一样,因此需要在一和二之间加一句getchar();以便取走回车符,这样才可以继续给m赋值。

三、getch()函数、getche函数跟getchar函数的区别:

①、所处的库函数不同,getchar是stdio.h中的函数,而getch跟getche是则是conio.h中的函数。

②、getch和getche函数是直接从键盘上读取函数,它们没有缓存区,缓存区有没有字符跟它们无关,而getchar则不同,上面讲过。

③、getche和getchar你输入的字符会在屏幕上显示出来,而getch则不带回显,你输入的字符不会显示在屏幕上。

④、getch和getche这两个函数,不需要用按回车完成输入,你输入一个字符会立刻被读取,并不需要其他键(如回车)来确定完成输入,而getchar函数需要使用回车键确定完成输入。

四、字符串输出函数int puts(char *p)函数:

puts函数向终端输出一个字符串,也可以说将一个字符串放到标准输出流中。其参数是字符指针类型,也可以是字符串常量,输出一行字符串后会自动进行换行操作。如果输出正确则返回输出字符串的长度,如错误则返回0。

puts函数会在字符串中判断\’\\0\’结束标志,一旦遇到那么即使后面还有字符串也不会输出,如puts(\”abcd\\0efg\”),输出结果abcd,并且自动换行。

五、字符串输入函数char *gets(char *p):

gets()函数从标准输入设备读取一个字符串,直到接受到换行或者EOF时结束,并且将读取的结果放到指针指向的字符数组当中,这里有一个问题,就是gets函数可以无限的读取,并不会判断上线,一旦超出字符数组的长度,程序将会将会崩溃,所以在使用此函数时应当注意。还有此函数如果读取成功,则返回指针p,否则返回NULL。

​​

六、格式输出函数printf函数:

printf函数也成为格式输出函数,其作用是向终端输出任意类型的数据,其一般形式为printf(格式控制,输出列表)。

参数说明:

①、格式控制是由双引号括起来的字符串,其中的字符串包含两部分,一种是格式字符,另一种是普通字符,普通字符也就是按原样输出的字符,重点就是格式字符,格式字符是以%开头,用来进行格式说明,将输出的数据转化为指定的格式。

下面介绍几种格式字符:

d、i:以带符号的十进制形式输出。

o:以无符号八进制形式输出。

x、X:以无符号十六进制形式输出,二者区别是前者a~f以小写形式输出,后者以大写形式输出。

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

c:以字符形式输出一个字符。

s:输出字符串。

f:以小数形式输出。

e、E:以指数形式输出实数,区别是用e表示指数以e表示,后面以E表示。

g、G:选用%f或%e格式中宽度较短的一种,不输出无意义的0。

如果在输出实数是%.nf时指精确到n位。

当字符格式为%ns时,表示输出字符占n列,如果字符长度小于n,那么输出的字符处在n列的最右侧,左边剩下的空格补齐。如果字符串长度大于n,则全部输出。

当字符格式为%-ns时,正好跟上面相反,输出的字符在n列的最左侧,右边以空格补齐。

当输出字符串是%n.ms格式时,指输出占n列,只取字符串左端的m个字符,并且这m个字符处在n列的右侧,左边以空格补齐,如果m>n,则m个字符全部输出。如:char *str=love;printf(\”%6.3s\”,str),结果为

lov,注意前面有三空格,可能不太明显。

如果%-n.ms格式时,区别是这m个字符,处在n列的左侧。上面的例子,结果为,lov ,注意后面有三空格,总共占用6列。

七、scanf函数:

scanf函数成为格式输入函数,即按指定格式将数据输入到指定变量当中。

其一般格式为scanf(格式控制,地址列表),与printf函数不同的是,printf第二个参数为变量名列表,而scanf为变量的地址列表。如&a,&b就代表变量a,b的地址,&为取址运算符,所以&a也是表达式,求变量a的地址。

scanf函数本身本身不能显示提示字符串,顾在需要提示时需要用printf函数。

scanf函数使用的格式控制符:

d、i:输入带符号的十进制数。

o:输入无符号八进制数。

x、X:输入无符号十六进制数,无论大小写。

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

c:输入单个字符。

s:输入字符串。

f:输入实型,小数形式指数形式均可。

e、E、g、G:与f作用相同,不论大小写。

*符:表示指定的输入项在读入后不赋给相应的变量。

如scanf(\”%d%*d\”,&a,&b);执行后变量b将得不到输入值。

也可以在格式控制符中加入正数,如scanf(\”%3d\”,&a),那么当输入1234时,只截取123赋给变量a。但是不能加入实数,不能指定输入精度,如scanf(\”%3.2f\”,&a),这是非法的。

附加格式说明符表:

l/L:输入一个长整型数据。(%ld %lo)。

h:输入短整型数据。(%hd,%ho)。

n:用于指定输入数据所占的宽度,上面以有所介绍。

*:前面以介绍过。

输入时间隔符:

①、空白字符:scanf函数在读操作中会略去一个或多个空格符,直到第一个非空白符出现为止,如scanf(\”%d%d\”,&a,&b),用户可以在输入时输入任意多的空格,如: 6 8,都不影响scanf函数获取,scanf函数会忽略这些空格。空白字符可以是空格、tab、newline等。

②、空白字符:非空白字符会使scanf函数在读入时剔除掉与这些非空白字符相同的字符。如scanf(\”%d,.,%d\”,&a,&b),输入6,.,8,或6 , . , 8等,那么之间的,.,将会被忽略,但是在用户输入时必须带上,.,,而且只能在中间,否则会出错。

但当输入字符使用%c,空格跟转义均为有效字符,如scanf(\”%c%c\”,&a,&b),输入s空格m,那么就会出现问题,字符s赋给a,但是并不是字符m赋给b,而是空格赋给b,m字符将被忽略。这一点要注意。

在输入字符串时,如果字符串中有空格,那么当scanf函数检测到第一个空格时,就结束读取。如scanf(\”%s\”,str(数组名不需要加取址运算符)),当输入i love you时,它只把i赋给str后面就忽略了。但是此时的缓存区中还有love you,此时如果使用getchar()函数就可以读取到剩余的字符,当然了也可以继续使用scanf函数。

运用scanf函数时一定要想到缓存区,比如,有两条输入语句scanf(\”%d\”,&a);scanf(\”%c\”,%b);那么在输入第一条语句后,由于需要回车确认结束,那么当第一个数据被赋予变量a以后,回车进入了缓存区,所以下一个输入语句不需要再输入,scanf函数直接就将回车符赋给变量b,所以就出现了错误,回车就赋给了变量b。解决这问题很简单,只要在两条语句中加一句getchar()即可,也可以使用fflush(stdin)即可。

其实运用scanf函数并不难,只要想到缓存区即可。

至此文章暂时介绍到这里,下一篇在继续。

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/mianfei/6685.html

夏天最爱这碗面,清爽开胃不长胖,粗粮细做营养健康,太好吃了

(应开胃)夏天最爱这碗面,清爽开胃不长胖,粗粮细做营养健康,太好吃了

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部