资源描述
字符串输入
1,gets()函数
用gets()输入字符串,没有预定的长度,为了知道输入何时结束,解决的办法是读字符串,直到遇到一个换行 (\n),按回车键可以结束输入,它读取
换行符之前(不包括换行符)的所有字符,在这些字符后添加一个空字符(\0),然后把这个字符串交给调用它的程序它将读取换行符并将其丢弃
缺点:不检查预留有存储区是否能够容纳实际输入的数据,多出来的字符简单地溢出到相邻的内存区,fgets()改进了这个问题
2,fgets()函数
1),他需要第二个参数来说明最大读入字符数,如果这个参数值为n, fgets()就会读取最多n-1 个字符 或者读完一个换行符为止,由这二者中最先满足的那个结束输入
2),如果fgets()读取到换行符,就会把它存到字符串里,而不是像gets() 那样丢弃换行符
3),它还需要第三个参数来说明读哪个文件,从键盘上读数据时,可以使用stdin作为该参数 如:fgets( name , Max ,stdin);
缺点:由于fgets()把 \n 也当做输入字符,所以输出时,每遇到 \n 就自动换行,可以用strchr() 来定位和删除换行符
3, scanf()
1), 带有%s格式scanf()函数来读入一个字符串 ,带有%c可读取一个字符,此时空格符也算一个字符所以输入是要注意了
2),scanf()使用2种方法决定输入结束
· 遇到第一个空格,制表符,换行符
· 如果指定了字段宽度,比如%10s,则scanf()就会读入10个字符,或知道遇到第一个空白字符,二者最先满足的那个终止输入
输入语句
原始输入队列
Name中的内容
剩余队列
Scanf(“%s”,name)
Fleebert□hup
Fleebert
□hup
Scanf(“%5s”,name)
Fleebert□hup
Fleeb
ert□hup
Scanf(“%5s”,name)
Ann□ular
Ann
□ular
· scanf()函数返回的是一个整数值,是成功读取的项目数或当遇到文件结束时返回EOF。
字符串输出
1,puts()函数
1), 与printf()不同,puts()显示字符串是自动在其后添加一个换行符,puts()遇到空字符时,输出停止,所以确保有空字符存在否则直到发现一个空字符为止
2,fputs()函数
1), fputs()函数需要第二个参数来说明需要写的文件,可以使用stdout作为参数来进行输出 stdout在stdio.h中定义了
2),与puts不同,fputs()并不为输出自动添加换行符
字符串输入、输出的比较:
· gets()丢弃输入的换行符
· puts()为输出添加换行符
· fgets()存储输入的换行符
· fputs()不为输出添加换行符
例如一程序中要求读取一行并把它回显在下一行,则可以这样写
char line[8];
while(gets(line))
puts(line);
3,printf()函数
可以格式化多种数据类型,更常用
字符输入输出函数getchar() putchar() getch() getche()
1,getchar()函数从键盘键入字符结束后,既带缓冲区有带回显
2,getche()函数:从键盘键入字符结束后,既不带缓冲区而有带回显
3,getch()函数:从键盘键入字符结束后,既不带缓冲区有不带回显
4,getchar()和putchar()的区:
getchar()无参数,函数的返回值,即为输入字符。如: a = getchar();
putchar()有参数,如char c; putchar(c); putchar('C');
展开阅读全文