C语言
一.scsanf()函数
1.介绍:
scanf("输入格式控制符",&输入参数);
若输入格式与格式控制符不相符合,则输入无效(大概率出现错误)
2.注意点
a. scanf不是直接在键盘上读取数据,而是在输入缓冲区读取;(键盘上的任意输入都会放入缓冲区,当然就包括了空格与回车)
b. 读取遇到空格或者换行符结束读取(输入格式内有空格不受影响);
例如:
char a[20];
scanf("%s",a);
printf("%s\n",a);
运行这段代码就会出现下图情况:
其中输入i love you,预期打印i love you,结果:输出i;
原因正如以上a,b俩点所示,要解决的话则需要反复读取,比较麻烦,在这里不做介绍。
3.如何清空缓冲区(避免scanf误读):
使用以下几个函数之一:
a. rewind(stdin);
b.setbuf(stdin,NULL);//通用性可能不是很高
c.fflush();//VS上可用,其他编译器不保证
二.gets()函数
1.介绍:
gets(所需读取的字符串的地址);
功能:从输入缓冲区读取一个字符串
2.注意点:
a.遇到换行符(回车)结束(空格不结束读取);
b.在使用完gets()函数后,系统会自动取出换行符,因此不用认为刷新缓冲区
举例:
char str[20];
gets(str); //例如直接输入i love you
printf("%s\n",str);
输出结果:
可以解决上边scanf()读取英文句子时需要反复读取的弊端。
三.getchar()函数
1.功能:
在缓冲区读取一个字符(包括空格,回车,Tab),若读取到的为数字,也当作字符处理。
2.注意:
a.一次只能从缓冲区读取一个字符;
b.在读取时,在输入完之后需要输入一个回车键,getchar才会拿到这个字符,因此
char a; a=getchar(); putchar(a);
这段代码若要打印出a则需要输入俩次回车键;
c.若在输入时,输入了超过一个的字符,则一个getchar只能读取一个,剩下的还会停留在缓冲区,等待下一个getchar来读取;
四.getch()函数
功能:
与getchar函数功能相似
注意:
a.头文件:#include<conio.h>
b.在键盘上输入后会直接打印 ,不需用按回车。
c.在linux平台下时,还应该在使用函数之前使用initscr(),使用完之后调用endwin().否则的话不需输入就会直接返回。
C++读取函数
一.getline()函数
一.功能:
读取一个字符串,遇到换行符结束读取。
二.用法:
头文件:<string>
getline(cin,所要读取的字符串的地址);
其中cin是标准输入流
二.cin
用法:
cin>>str;
str为字符串地址;
读取遇到换行符 空格结束