从控制台读取数据要注意两点:

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