c-为什么输出的是hellohello

问题描述

为什么输出的是hellohello

新人渣渣,求大神勿喷,带我装逼带我飞.....

解决方案

首先,你的前两行变量定义等价于:

    char a[6] = {'h', 'e', 'l', 'l', 'o', 0};
    char b[5] = {0, 0, 0, 0, 0}

注意 a 实际有 6 个元素,且最后一个是 0.

在内存中,这两个变量实际是连续存储的:

    0, 0, 0, 0, 0, 'h', 'e', 'l', 'l', 'o', 0

也就是 b 在前,a 在后。

当你执行循环后,这一段内容变为:

     'h', 'e', 'l', 'l', 'o', 'h', 'e', 'l', 'l', 'o', 0

在执行输出时,printf 寻找b之后的第一个 0 作为结尾,也就 printf 是从前面的 h 到最后的 0 之前一个文字全部输出,因此结果是

    hellohello

解决方案二:

这个代码告诉你一个事实,那就是C语言不会对下标越界做出判断。
你的程序根本就是错的,第二个数组长度不够,但是你试图去复制第一个数组,访问超过它长度的下标,你仍然有可能得到预期的结果。
但是不因为它能得到结果就是对的,如果正好这个数组后面的内存被分配了,那么程序就可能出错。
好比,闯红灯不是每次都会被压死。但是你不能说闯红灯没被压死就觉得闯红灯是对的。
顺便说下,C语言过于简陋的语言检查使得它不适合初学者,这个例子就是证明。

解决方案三:

这个输出是随机的,使用printf输出字符串时,只输出到字符串的结束符,就是'',你把数组a[]的值逐个赋数组b[]之后,没有添加结束标志,所以输出的时候除了在hello后面还有一串字符,这个跟计算机的储方式有关,在不同的机器上存储的有可能不一样。你把最开始的赋值语句颠倒一下顺序,或者在多定义几个其他的变量,说不定输出有不一样。

解决方案四:

我不认可C语言过于简陋,我你这个问题就是因为C语言不进行边界检查造成的,你在编写程序的时候一定要时刻关注内存,不然写出来的程序就有可能有溢出

解决方案五:

C++输出格式

解决方案六:

初学c++ 常常犯的错误 字符串后面常常忘记''
字符串长度 strlen(s) 要价一。

解决方案七:

这个·······我也不晓得

解决方案八:

这C 也太神奇了吧,不懂啊

时间: 2025-01-20 18:25:10

c-为什么输出的是hellohello的相关文章

c语言如何输出菱形

 适有同学问起一些C语言题目,本想上网搜索了事,但网上的方法都是分为上下部分用两个嵌套for循环输出.我想有没有合起来输出的呢,这样符合简洁又美观的要求呢?答案是有的. 题目:输出行列都相等的菱形,如5行5列: 行列 12345 1      * 2     *** 3    ***** 4     *** 5      *   分析: 当行数等于总行数的一半时,'*'是递增的,递增为2. 当行数大于总行数的一半时,'*'是递减的,递增为2.   设有一个行列为n的菱形, 我们用变量i作为行数,

浅谈document.write()输出样式

  这篇文章主要介绍了浅谈document.write()输出样式,十分的简单实用,有需要的小伙伴可以参考下. js中的最基本的命令之一:document.write(),用于简单的打印内容到页面上,可以逐字打印你需要的内容--document.write("content"),这里content就是需要输出的内容;当然还有一种情况,需要输出JS之中比如变量等等变化的东西,那么就需要用document.write(+variable);当然variable就是你想要输出的变量. 既然可

servlet-怎样实现在一个JSP页面不同的div盒子中输出内容

问题描述 怎样实现在一个JSP页面不同的div盒子中输出内容 请大家帮忙看一下,一个JSP页面,主体包含若干个DIV盒子,每一个菜单按钮控制一个盒子的显示,其他的隐藏,请问如何利用Servlet,只在一个盒子中显示出信息.(我用的是request.getRequestDispatcher("/index.jsp").forward(request, response);)但是显示一下,整个页面就不见了,报404错误.请问该如何实现,谢谢大家! 解决方案 http://zhidao.ba

jstl-jxls问题: excel模板中foreach的横向和纵向输出的问题

问题描述 jxls问题: excel模板中foreach的横向和纵向输出的问题 如图: 为什么纵向正常,横向时候index就出问题,而属性都是对的.求解

c-关于C字符串数组格式化输出的一些小问题

问题描述 关于C字符串数组格式化输出的一些小问题 尝试写了一个输入输出文件和小程序,因为出问题的就只有这两行代码,所以没有把其他代码贴上来 最初代码是这样的 head[][5] char head[][5] = { "id", "name", "age", "grade" }; fprintf ( input_file, "%st%st%st%sn", head[0], head[1], head[2],

java-怎么把遍历list集合输出的元素对其

问题描述 怎么把遍历list集合输出的元素对其 图一怎么把list集合遍历输出的元素对其,.图二怎么把字符串转为int类型,,..图二的做法报异常,该怎么做 解决方案 Java中List集合的遍历Java中List集合的遍历Java中List集合的遍历 解决方案二: 这是用的idea啊,,,用的舒服吗?? 解决方案三: 图一:由于你的序号到了10以上,多了一个字符,所以才会乱的,解决方案呢,就是在序号为个位数的,多加一个空格就可以对齐了: 图二:int code=Integer.parseInt

ns2-为什么瓶颈节点处的队列长度输出图是从几秒后开始

问题描述 为什么瓶颈节点处的队列长度输出图是从几秒后开始 在NS2中实际的模拟时间是从0秒开始的,但是输出图中却是从几秒后才有图像,老师说这是正常的,叫我回来想原因,可是我想到的原因全被老师否决了,所以想来问问大神们. 解决方案 因为刚开始的时候还没有形成阻塞,过了几秒之后缓冲被用完,就形成阻塞了

新零售空间数据库实践一例 - PostGIS 点面叠加视觉判断输出

标签 PostgreSQL , 点面视觉输出 , subquery , nestloop join , 空间索引 , gist 背景 在新零售.快递等行业,有大量的点数据(例如包裹位置.快递员位置.仓库位置等),同时有大量的面数据(如小区,商圈,写字楼等). 如何判断实时的正在配送的包裹落在哪个面呢?并且将之联系起来. 这个从视觉角度来思考,非常简单. 例如有一个地图,将其划分为若干个面(例如前面提到的小区). 然后有一些小点,这些是POINT数据. 我们从图上一眼就能看出每个点落在哪个小区(面

解决一个Django Rest Framework的JSON输出的小问题

  在服务器升级迁移过程中,遇到一个见了鬼的问题. 同样的一个API输出,在本机测试时和生产中一台机器上的输出为纯数据的json格式. 而在另一台生产机器上却为加了统计和跳转信息的另一种json格式. 由于前端用了vue.js作了数据的加载,如果同样的代码,那获取json中对象的信息显然就会发生问题. 解决BUG的时间来不及,也无法深入调试.可用以下代码,判断json中是否有存在对象来进行对象的赋值,可解决这个输出问题. 以后找时间还是深入研究一下这个DRF的输出机制吧. //此处兼容djang