从控制台读取数据要注意两点:
1、数据类型: 整型
浮点型
单个字符
字符串(是否包括空格、换行符等)
2、读入数据后缓冲区的指针指向什么位置:
一般都指向读入数据的下一位
在控制台输入数据时,所有数据都是输入到缓冲区,也都是从缓冲区读取数据,存在一个指向缓冲区的指针。
1、cin
遇到空格、tab、enter结束
cin>>a 如果a是字符串时,在a末尾添加0,(如果输入的字符串长度大于数组a的长度,则最后一位不输入数据,而是替换成\0)
2、gets和getline
读到enter或者EOF结束
读取一行时,末尾添加'\0',换行符不存储
这两种方法实现的功能相同
例1:
char a[10000];
gets(a);
int len=strlen(a);
例2:
string s;
getline(cin,s);
cin.getline(s,1000);
int len=strlen(s);
3、getchar()
从缓冲区中读取一个字符,可以是任意字符(包括空格、tab、enter)
4、gets()
从缓冲区中读取字符串,遇到enter结束,不保存enter,遇到空格、tab保存,末尾也保存0
5、getch()
用户输入一个字符就直接返回一个字符,不从缓冲区读
6、scanf()
scanf("%d,%d",&d,&d);屏幕应该输入10,20
scanf("%d%d",&d,&d);屏幕应该输入10 20或10tab20或10enter20
scanf("%s",s);遇到空格、enter、tab结束,不读取这些字符
scanf("%c",&c);读取所有字符,包括空格、tab、enter