• cin、scanf、gets、getchar 用法介绍


    scanf是格式化输入,printf是格式化输出。
    cin是输入流,cout是输出流。效率稍低,但书写简便。

    cout之所以效率低,
    是先把要输出的东西存入缓冲区,再输出,导致效率降低。

    来源:
    http://blog.csdn.net/cyuyanenen/article/details/51602922

    一、scanf 
    scanf一般可用于读取数字、字符、字符串; 
    结论: 
    (1)当 scanf 从缓冲区中读取单个字符(%c)时,若缓冲区中第一个字符是空格、tab或换行这些分隔符时,scanf 不会将其忽略,会读取并清除。 
    (2)当 scanf 从缓冲区中读取数字或字符串(非单个字符)时,若缓冲区中第一个字符是空格、tab或换行这些分隔符时,scanf 会将其忽略并清除,继续读取下一个字符,若缓冲区为空,则继续等待。但是如果读取成功,字符后面的分隔符是残留在缓冲区的,scanf 不做处理。 
    (3)scanf 读取字符串时,当遇到空格、回车和Tab键都会认为输入结束。当遇到回车,空格和tab键会自动在字符串后面添加’’,但是回车,空格和tab键仍会留在输入的缓冲区中。(所以它不能接收包含空格、回车或Tab等的字符串) 
    (4)scanf() 读取字符串时, 
    语法:scanf(“格式控制字符串”,变量地址列表); 
    接受字符串时:scanf(“%s”,字符数组名或指针);

    二、gets 
    gets 一般只用于读取字符串; 
    结论: 
    (1)gets可以接收空格,遇到回车认为输入结束; 
    (2)gets 可接受回车键之前输入的所有字符,并用’ ’替代 ‘’。回车键不会留在输入缓冲区中。 
    (3)gets() 读取字符串时,
    语法:gets(字符数组名或指针); 
    (4)gets(s) 函数中的变量s为一字符串指针。如果为单个字符指针,编译连接不会有错误,但运行后内存溢出错误。 
    (5)gets函数可以无限读取,不会判断上限,以回车结束读取,所以应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。

    三、getchar 
    getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab);注意,getchar函数只能接受单个字符,输入数字也按字符处理,输入多于一个字符时,只接收第一个字符。 

    四、cin 
    该操作符是根据后面变量的类型读取数据。 
    输入结束条件 :遇到Enter、Space、Tab键。 
    对结束符的处理 :丢弃缓冲区中使得输入结束的结束符(Enter、Space、Tab) 
    结论: 
    (1)当cin>>从缓冲区中读取数据(不论是字符、数字或字符串)时,若缓冲区中第一个字符是空格、tab或换行这些分隔符时,cin>>会将其忽略并清除,继续读取下一个字符,若缓冲区为空,则继续等待。但是如果读取成功,字符后面的分隔符是残留在缓冲区的,cin>>不做处理。
  • 相关阅读:
    Linux下mysql的自动定时备份
    javaweb面试题
    java面试题
    Web应用优化之nginx+tomcat集群配置+redis管理session
    Web应用系统通常可以经过哪些层面的优化
    HBase安装
    博客园所有文章字数统计
    Python生成器
    Python列表生成式
    直方图均衡化-Python实现
  • 原文地址:https://www.cnblogs.com/wsdestdq/p/6838291.html
Copyright © 2020-2023  润新知