zoukankan      html  css  js  c++  java
  • 字符串输入之%s

    [ Example ]

    #include <stdio.h>
    
    int main()
    {
    	int no;
    	char name1[15], name2[15], name3[15];
    
    	printf("Enter no and name1:
    ");
    	scanf("%d %15c", &no, name1);
    	printf("%d %15s 
    
    ", no, name1);
    
    	printf("Enter no and name2:
    ");
    	scanf("%d %s", &no, name2);
    	printf("%d %15s 
    
    ", no, name2);
    
    	printf("Enter no and name3:
    ");
    	scanf("%d %15s", &no, name3);
    	printf("%d %15s 
    
    ", no, name3);
    
    	return 0;
    }
    

    [ Output ]

    [ Question ]

    1、第二次输入完成后,按下回车,程序直接结束。为什么会自动忽略第三次输出?
    2、为什么 York 进行输出?

    [ Notice ]

    当使用字符说明符%s时,一旦遇到空格,读取工作将终止。
    scanf从输入数据行读取数据时,将忽略空白符:空格、制表符、换行符。

    [ Answer ]

    ① 首先,我们测试另一组输入

    通过对比两组输入,我们发现,当遇到与字符说明符不符的用户输入时,scanf会自动的进行匹配。将整型数字赋值给%d,字符类型赋值给%s表示的变量,而与这两段拼接在一起的字符串之间是否有空格无关

    ② 通过调试,我们发现,能够使scanf 提前终止,有4个条件,满足其一即可:

    1. 如果指定了字段宽度,读取的字符数达到了了指定的宽度。(如%15c,输入的字符数目达到了15个)
    2. 读取时遇到了一个与字符说明符不匹配的字符。(如%d,而输入的是一个字符Y)
    3. 遇到了空白字符
    4. 到达文件末尾
  • 相关阅读:
    实现单台测试机6万websocket长连接
    关于ArcGIS10.0中的栅格计算中的函数
    .NET破解之迅捷PDF转换器(续)
    ArcEngine 0x8004023C
    VS2010中重命名项目
    地理数据库本身不能加密
    ArcEngine尝试读取或写入受保护的内存
    利用路由器连接别人家的网络
    ArcGIS的许可文件问题
    MapGIS转Shp文件的单位问题
  • 原文地址:https://www.cnblogs.com/zhyantao/p/11330534.html
Copyright © 2011-2022 走看看