zoukankan      html  css  js  c++  java
  • 2

    scanf_s("%d", &n);
            for (j = 0; j<n; j++)
            {
                scanf_s("%d", &a);
                sum += a;
            }

    输入的值为4 1 2 3 4

    经过调试可以发现输入一次后你的值分别为 4 1 2 3 4 具体原因如下:

    所以,上述程序并不能达到预期目的,scanf()扫描到"I"后面的空格就认为对str的赋值结束,并忽略后面的"love you!".这里要注意是"love you!"还在键盘缓冲区(关于这个问题,网上我所见的说法都是如此,但是,我经过调试发现,其实这时缓冲区字符串首尾指针已经相等了,也就是说缓冲区清 空了,scanf()函数应该只是扫描stdin流,这个残存信息是在stdin中)。我们改动一下上面的程序来验证一下:#include <stdio.h>
    int main()
    {
    char str[80];
    char str1[80];
    char str2[80];
    scanf("%s",str);/*此处输入:I love you! */
    printf("%s",str);
    sleep(5);/*这里等待5秒,告诉你程序运行到什么地方*/
    scanf("%s",str1);/*这两句无需你再输入,是对键盘盘缓冲区再扫描 */
    scanf("%s",str2);/*这两句无需你再输入,是对键盘盘缓冲区再扫描 */
    printf(" %s",str1);
    printf(" %s",str2);
    return 0;
    }
    输入:I love you!
    输出:I
    love
    you!

  • 相关阅读:
    软件测试人员的要求
    冒烟测试和回归测试的区别
    [go]struct
    [go]socket编程
    [go]gorhill/cronexpr用go实现crontab
    [go]os/exec执行shell命令
    [go]time包
    [go]etcd使用
    [go]redis基本使用
    [go]go操作mysql
  • 原文地址:https://www.cnblogs.com/songyy/p/3485433.html
Copyright © 2011-2022 走看看