首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在side函数上用字符串填充数组。为什么它会打印乱七八糟的东西?

在side函数上用字符串填充数组,但为什么会打印乱七八糟的东西呢?

这个问题可能有多种原因导致打印结果不符合预期,以下是一些可能的原因和解决方法:

  1. 数组越界:如果在填充数组时没有正确控制循环边界,可能会导致数组越界访问,从而打印出无效或随机的内存内容。确保在填充数组时使用正确的循环条件和索引范围。
  2. 字符串截断:如果填充数组的字符串长度超过了数组元素的长度,可能会导致字符串被截断,从而打印出部分字符串或乱码。确保填充数组的字符串长度不超过数组元素的长度。
  3. 字符串终止符:在C语言中,字符串以空字符'\0'作为结束符。如果填充数组的字符串没有正确添加终止符,可能会导致打印出乱码或无效的字符。确保填充数组的字符串以空字符结尾。
  4. 内存泄漏:如果在填充数组时没有正确释放动态分配的内存,可能会导致内存泄漏,从而打印出无效的内存内容。确保在填充数组后释放相关的内存。
  5. 其他错误:除了上述可能的原因外,还有其他可能的错误,如函数调用错误、变量未初始化等。检查代码中的其他部分,确保没有其他潜在的错误。

总结起来,打印乱七八糟的东西可能是由于数组越界、字符串截断、缺少字符串终止符、内存泄漏或其他错误导致的。在填充数组时,需要注意控制循环边界、字符串长度、添加终止符,并确保正确释放相关的内存。如果问题仍然存在,建议检查代码的其他部分,以排除其他潜在的错误。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Rust FFI 编程 - 手动绑定 C 库入门 03

Rust 调用 C,内存在 C 这边分配,Rust中进行填充 为了分析清楚这个场景,我们设计了一个例子。实现过程中,遇到了相当多坑。这方面的资料,中英文都非常缺乏。...这个例子流程按这样设计: C端,设计一个结构体,字段有整型,字符串,浮点型 C端,malloc一块内存,是一个n个结构体实例组成数组 C端,导出三个函数。...,填充C中管理结构体数组 Rust中,打印这个结构体数组 利用Cprint,打印这个结构体数组 调用Crelease,实现资源清理。...可以看到,达到了我们预期目标:Rust中,修改C中创建结构体数组内容。...C字符串细节 C字符串末尾是带 \0

1.6K10

【JS】446- 你不知道 map

当然可以,有很多东西从某种维度上讲都是同一类东西,关键R.map维度是什么呢? 先别讲什么乱七八糟,接下来咱们来看一看官方文档上都有哪些描述....之前基础上:如果需要先筛选出小于等于2数值,然后再给每一项+1,最后统计出数组中所有数和。...String 是存放着字符串数组,像这几个数组都是属于 Array String :[],['foo', 'bar', 'baz'] Array(Array String) 是存放着数组数组,存放数组里面又存放着字符串...,比如 Array String,代表字符串数组,Array 就是 f ,它满足Functor类型类。...明白什么是范畴之后,接下来说一说我们主角:子 先来看看维基上解释: 范畴论中,子是范畴间一类映射。子也可以解释为小范畴范畴内态射。

1.3K20
  • C语言 | 每日基础(91)

    读者:程序执行正确, 但退出时崩溃 main() 最后一个语句之后。为什么会这样? 阿一:注意是否错误说明了 main(,是否把局部缓冲传给了 setbuf() 或 setvbuf()。...又或者问题出在注册于 atexit() 清理 数。 读者:为什么程序一台机器上执行完美, 但在另一台上却得到怪异结果? 阿一:许多地方有可能出错。...下面是一些通常检查要点: • 未初始化局部变量 • 整数上溢, 特别是一些 16 比特机器上, 一些中间计算结果可能上溢, 象 a * b / c • 未定义求值顺序 • 忽略了外部函数说明...、malloc 内部被破坏 • 指针类常规问题 • printf() 格式与参数不符, 特别是 %d 输出 long int • 试图分配内存大小超出一个 unsigned int 类型范围,...特别是在内存有限机器上 • 数组边界问题, 特别是暂时小缓冲, 也许用于 sprinf() 来构造一个字符串 • 错误假设了 typedef 映射类型, 特别是 size t。

    5893330

    C语言字符串IO

    问题: 问题在于gets唯一参数就是数组名,它无法检查数组是否装得下输入行,数组名会被转换成该数组首元素地址,因此gets函数只知道数组开始处,如果输入字符串过长,会导致缓冲区溢出,及多余字符超出了指定内存空间...fputs函数不在字符串,末尾添加换行符所以未打印空行。...\n这一特性处理超过了规定数组限制输入情况,并且输出完整字符串。...如果字符串中出现了换行符,那就用空字符替换它,如果字符串中出现了空字符,那就丢弃该输入行中其余字符,然后返回与fgets()相同值。 为什么要丢弃过长输入中余下字符?...Side A 分析:由于dont缺少了一个表示结束空字符,所以它不是一个字符串,因此puts()不知道在哪里停止,它会一直打印dont后面内存中内容,知道发现一个空字符为止。

    4.6K10

    编程(1)-泛编程是如何实现

    编程就是把函数组合起来形成一个完整程序。可想而知,函数组过程可以是曲折,形成程序可以是复杂。那么泛编程又是如何保证一个复杂数组合程序是正确无误呢?...这个什么不可变化特性解释够绕了吧?实际上这也是泛编程重点所在,我看还是要解释清楚才行。     泛程序是由纯函数组成。...所谓纯函数(Pure Function)是指这个函数结果完全或只依赖它输入。对于任何一个输入值只会产生一个唯一相同结果,而不会因为什么其它原因影响而变成另一个不同结果。...因为泛程序是由纯函数组成,纯函数是”可等量替换“,具备行为不可变化特性,所以能保证泛程序正确性。    ...Scala语言中 “+” 是个函数名称,我们可以确定这个“+”函数是个纯函数,因为我们可以放心结果2来“等量替代” 表达式1+1。

    1.6K80

    笨办法学 Java(四)

    然后第 38 行,我们设置循环来查看数组每个槽。然而,请注意,循环从索引1(第二个槽)开始。为什么? 因为 max 已经是0。...使用其他东西,比如一个可以添加条目时自动增长数组。这实际上可能是正确解决方案,但是“其他东西”超出了本书范围。 读取文件两次。首先只计算记录数量,然后使用完美大小创建数组。...第 29 到 31 行,我们创建了两个字符串数组。第一个(第 29 行)包含了花色名称。第二个包含了卡片名称。 你可能会注意到我有一张叫做"ZERO"的卡片,另一张叫做"ONE"的卡片。为什么?...说到这一点,第 30 行打印出当前房间描述,它存储 描述字段。 第 31 和 32 行,我们打印出一个小提示,并让玩家输入他们想去地方字符串。...因为当前房间没有改变,所以主游戏循环中再次循环将只是再次打印出他们已经房间描述。 这就是主游戏循环结束,也是main()结束。剩下就是从冒险游戏文件中实际填充房间数组

    10010

    python学习笔记2.2-print函数以及格式化输出

    与国际接轨,接触一门语言第一次编程,一定是屏幕上打印“hello world”。python打印输出有两种方式,一个是使用print() 函数,另一个就是使用format方法格式化输出。...format格式化输出 ython中格式化输出字符串使用format()函数, 字符串即类, 可以使用方法;Python是完全面向对象语言, 任何东西都是对象;字符串参数使用{NUM}进行表示,0...将数字以16为基数进行输出, 9以上位数小写字母. 'e' - 幂符号. 科学计数法打印数字, 'e'表示幂. 'g' - 一般格式. 将数值以fixed-point格式输出....当数值特别大时候, 幂形式打印. 'n' - 数字. 当值为整数时和'd'相同, 值为浮点数时和'g'相同. 不同它会根据区域设置插入数字分隔符. '%' - 百分数....5 格式限定符 它有着丰富“格式限定符”(语法是{}中带:号),比如: 填充与对齐 填充常跟对齐一起使用 ^、分别是居中、左对齐、右对齐,后面带宽度 :号后面带填充字符,只能是一个字符,不指定的话默认是空格填充

    1.3K50

    【C语言基础】内存初始化

    我们编写C语言时候需要给变量申请一块内存区域,当我们创建一个内存区域时候,内存中数据十有八九是乱七八糟(因为其他代码用过后遗留数据并没有及时清掉) int main() { char...str[10];//分配10个字节内存可能被用过; printf("%s\n",str);//这个代码打印出来可能就是乱码,因为printf%s是“打印一直遇到'\0'" return...这里有两种解决问题方法: 第一种: 使用menset函数为新申请内存做初始化工作 menset(void*,要填充数据,要填充字节个数) int main() { char str[10...将str中前n个字节 (typedef unsigned int size_t ) ch 替换并返回 str 。...memset:作用是一段内存块中填充某个给定值,它是对较大结构体或数组进行清零操作一种最快方法。 memset是计算机中C/C++语言函数。

    1.8K60

    Rust FFI 编程 - Rust导出共享库02

    我们首先回顾关于字符串基础知识,了解其Rust和C中区别,然后设计具体示例进行实践,并整理出传递字符串FFI编程范式。 基础知识 C 语言中,字符串可看作是由字符组成一维字节数组。...字符串可以指针和字节数组来表示,这是两种不同方式存储: 将字符串存储字符类型数组中时,最初,字符串是字节序列,其中每个字节代表一个字符。但后来为了表示宽字符,ISO C 标准引入了新类型。...将字符串对字节数组进行初始化后,函数执行时会被拷贝到栈区或堆区(使用 malloc),这时数组内容是可以被修改。因此,对于需要修改字符串,应使用char[] 方式声明。... Rust 标准库中提供了对字符串按字符处理(chars())和按字节(bytes())处理操作支持,其中单个字符是char类型来表示,而使用u8来表示字节类型。...有print_str和change_str两个函数,其参数均为 C 端生成一个字符串,分别实现打印和修改该字符串功能; 有个generate_str函数,其返回值是 Rust 端生成一个字符串,以及

    1K20

    函数式编程(FP)

    js 为了实现面向对象思想,做了很多事情,导致大家在学习 js 时候,会遇到复杂原型、原型链、继承,还有对人不友好 this ;而当我们这些东西组合起来模拟面向对象特性时候,就更加痛苦了。...因此内部函数依然可以访问外部函数成员。 可能有的同学会问,为什么有引用不会被释放?...有的时候我们会拆分很多细粒度函数库,这里可以了解一下 lodash (https://lodash.com/docs/4.17.15)功能库,它提供了丰富数组、数字、对象、字符串、函数等操作方法...处理副作用之前,先聊下子。 什么是子? 容器:包容值和值变形关系(这个变形关系就是函数)。...以往开发过程,我们可能习惯了变量存储和追踪程序状态,不停一些节点打印语句来观察程序过程,现代 JavaScript 库已经开始尝试拥抱函数式编程概念以获取这些优势来降低系统复杂度。

    1.7K10

    Javascript 面试完美指南(开发者视角)

    可以如下方式来创建对象: var marks = {}; var marks = new Object(); 可以使用 JSON.stringify() 将一个对象转制成字符串,也可以...Object.isSealed(marks); // returns true 全局对象函数上还有许多其他重要函数/方法,在这里找到他们。...除了 exec 之外,还有其他函数,即 match、search 和 replace,可以使用正则表达式另一个字符串中查找字符串,但是这些函数字符串本身上使用。...map map 函数 JavaScript 数组中可用,使用这个函数,我们可以通过对数组每个元素应用一个转换函数来获得一个新数组。..., 没有分配则填充 undefined 在上面的代码片段中,console.log 打印 “undefined”。

    1.3K50

    你必须知道指针基础-6.内存初始化及结构体使用

    当我们创建一个内存区域时候,内存中数据可能是乱七八糟(可能是其他代码用过后遗留数据),如下面一段代码: int main(int argc, char *argv[]) { // 下面申请...(2)使用初始化填充0:    除了使用memset函数之外,另一种比较直接方式就是初始化时直接指定要填充数据,如下面的代码: int main(int argc, char *argv[]) {...那么,问题又来了,假如我main函数中,给name赋值了一个很长很长字符串呢?...为什么呢,我们可以通过下面这张图来看看: ?   ...可以看到,无论我们为name赋值多么长字符串,存储永远只是一个指向具体字符串指针,也就是一个地址(一个神奇数字),结构体大小不会因为具体指向字符串大小而变化。

    68030

    这 11 个前端小知识你不一定知道

    我害怕 JavaScript 原因,主要是因为很难理解为什么它会以这种方式工作。...为什么?这是因为,当我们调用不带参数 sort 方法时,JavaScript 会将数组元素转换为字符串,然后按字母顺序排序,疯狂吧?...由于我 Java 中使用字符串经验,这让我感到困惑。 06、Push 函数 我代码中经常使用 push 方法。虽然我最近知道我们也可以使用 push 来合并数组。...07、isNaN 函数 isNaN 再次成为 JavaScript 中最常用方法之一。它检查给定参数是否是数字。但它对于空字符串填充字符串行为不同。见下文。...知道这一点后,我开始数上使用 parseInt(),然后,再将它们传递给 isNaN 函数。 08、对象动态键 有时我不得不根据 API 响应或某些计算为我对象分配动态键。

    96720

    力扣题目汇总(旋转数字,移除元素,找不同)

    你不需要考虑数组中超出新长度后面的元素。 说明: 为什么返回数值是整数,但输出答案是数组呢? 请注意,输入数组是以“引用”方式传递,这意味着函数里修改输入数组对于调用者是可见。...也就是说,不对实参作任何拷贝 int len = removeElement(nums, val); // 函数里修改输入数组对于调用者是可见。...// 根据你函数返回长度, 它会打印数组中该长度范围内所有元素。...字符串 t 由字符串 s 随机重排,然后随机位置添加一个字母。 请找出在 t 中被添加字母。...2.解题思路 #有两种情况 #第一种添加字母原来字母中没有,这个可以FOR然后判断有无进行 #第二种添加字母原来字母中有,用计数来判断 #为了减少运行时间我们要引入SET去重 3.解题 class

    68350

    深入理解JavaScript函数式编程

    为什么要学习函数式编程?...,提供了对数组、数字、对象、字符串、函数等操作一些方法....比如我想打印某个方法执行结果,其实处理非常简单我们只需要在想要打印某个方法执行结果方法后面添加一个方法trace,trace方法就是提供打印方法,该方法中可以拿到上一个方法返回值这样就可以打印上个一个方法结果了...fp模块 如下代码,_.map中对某个数组执行将数组元素转换为Number类型,但是结果打印却是:23 NaN 2 这是为什么呢?...//先切割字符串变成数组,map将数组每一个元素转换为大写,map将数组获取数组元素首字母 const firstLetterToUpper = fp.flowRight(fp.join(', '

    4.3K30

    简单说 通过JS隐式转换,关键时刻救你一命

    说明 JavaScript比较时候,会进行隐式转换,你如果对隐式转换不是特别熟悉,结果往往出乎你意料。 我们来看看这行代码 (![]+[])[+!![]- -+!![]- -+!!...[]] 这行代码结果可能出乎你意料,看结果 ? 结果居然是sos,这就是为什么会给文章这样一个题目了,这行代码看上去似乎是乱七八糟,但是相信你看完这篇文章,一定能自己写出这样代码来。...[] 这个东西是什么,居然出现了三次 +!![],!优先级最高,先算 !![ ],!!...[]] 第一部分 ({}+[]) ( )里面的{},不是语法上花括号,不是语句块意思,而是表示了一个空对象,这里相加时候会调用对象toString()方法,所以它会转为"[object Object...]",字符串类型哦!

    41851

    聊聊dubbo协议2

    为什么2.7.x版本dubbo不支持provider端向consumer端回传隐式参数呢?今天续集将揭晓答案。...为什么2.7.x不处理呢? 2.6.x中,dubbo请求返回对象只有RpcResult ?...而在2.7.x中,RpcResult没了,新增了AsyncRpcResult和AppResponse,AppResponse是真实返回数据,它attachments是存在隐式参数,但它会被包装在AsyncRpcResult...[2.5.3, 2.6.3)版本中,dubbo版本与dubbo协议没有分开,都是url上dubbo参数,值是对应版本号,取值范围是 >=2.0.0 && <=2.6.2 [2.6.3, 2.7.0...参数上,dubbo协议版本dubbo参数上,目前还是2.0.2 最后 通过这次分析知道了2.7.xdubbo为什么provider不能带回隐式参数了,这应该是dubbo 2.7.x一个bug。

    70821

    JS 原生方法原理探究(五):如何实现 instanceof?

    这是JS 原生方法原理探究系列第五篇文章。本文会介绍如何实现 instanceof 方法。 typeof 操作符返回一个表示数据类型字符串,它可以应付常规场景下数据类型判断。...对基本数据类型 undefined、 boolean、string、 number、Symbol 和引用数据类型 function 都可以正确判断,但是对 null、数组、对象则统一返回 “object...从定义中我们可以看到,它原理和原型链机制有关,具体地说,它会拿到右操作数原型对象,然后左操作数上通过 __proto__ 不断查找实例原型链,只要右操作数 prototype 出现在左操作数原型链上时...所以,模拟实现中,我们只要不断遍历左操作数原型链,取得原型链上原型对象,并与右操作数原型对象比较即可。...= 'function'){ throw TypeError('the right-hand-side of instanceof must be a function') }

    1.8K20
    领券