zoukankan      html  css  js  c++  java
  • 由scanf引发的思考

    #include <stdio.h>
    main()
    {
    int n=5;
    char c[5];
    for(int i=0; i <n; i++){
    scanf("%c",&c[i]);
    fflush(stdin);}
    printf(c);//为什么输出会多出奇怪的字符
    return 0;
    }

    这是我最初的问题代码,是啊,为什么要输出一些奇怪的字符呢?因为我的数组没有结束字符'/0',就是这个原因!

    对于字符串我们平常是这样用的c[5]={"iwai"};或者是c[5]="iwai";其中已将包含'/0'赋给了c[5],以前虽然知道,但是没注意
    现在对比这个问题就很有代表性了,所以导致了上面输出的错误情况!
    所以上述要将a[4]赋值'/0'才是正确的!
    哎,搞的中午午觉都没怎么睡,收工睡觉!

    至于为什么就算我没有结尾符号它也只是输出有限的无用数据,也没有因为没有结尾二结不了尾,这个是因为什呢机制呢?目前还不清楚,希望网友的帮助!

    输出就是asdfg烫?
    为什么计算机输出“烫”,而且我发现我电脑了很多区域都是“烫”

    其实是这样的

    内存里面会有存放'/0'的地方,打印的时,什么时候遇到内存中有'/0',就在那里结束,所以后面的字符长度是随机的

    未初始化的变量会被系统赋初值为0xCC,超过了ASCII码0-127这个范围,因此这个“字符串”被系统当成了宽字符组成的字符串,即两个字节数据组成一个字符,而0xCCCC表示的宽字符正好是乱码中的那个“烫”字

    哎,搞的中午午觉都没怎么睡,收工睡觉!

  • 相关阅读:
    幂等性
    接口开发需要考虑内容
    接口安全保护策略
    高并发之API接口限流
    Windows 下通过DOS命令获取指定文件夹下所有文件的全路径
    spring cloud 版本号与 boot版本之间的对应关系(版本不对,会导致pom无法引入)
    springCloud全家桶
    map的循环删除操作
    Java hashCode() 和 equals()的若干问题解答
    SpringMVC工作流程
  • 原文地址:https://www.cnblogs.com/jackhub/p/3147258.html
Copyright © 2011-2022 走看看