首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何用另一个数组的字符在链接列表中追加数组

如何用另一个数组的字符在链接列表中追加数组
EN

Stack Overflow用户
提问于 2018-01-10 19:20:58
回答 1查看 178关注 0票数 0

我需要在链接列表中添加一个数组,并在链接列表中添加一个数组的单个字符。我试了一下strcat函数,但没成功。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for(int k=0; k < strlen(Node2->array); k++){
      strcat((char *)Node->array, (char *)Node2->array[k]);
}

ide给出了这个警告

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cast to pointer from integer of different size -wint-to-pointer-cast

当我运行程序的时候,程序就停止了,它不能继续了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-11 01:31:41

没有办法在C中追加数组,因为每个定义都是固定的(在编译时)相同类型元素的列表是连续存储的。只有在数组大小足够大的情况下,才能通过将\0字符进一步移动一个位置(如果数组中有更多字符的位置)并将所需字符放在它前面,就可以追加一个字符串(它是通过在有效字符列表末尾追加一个\0空字符而部分填充的字符)。一个示例将说明这一点(我将稍微简化,以分离您所指出的与附加问题无关的列表问题)

让我们拥有:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char c = 'A';
char array[100] = "The string to be appended with ";

第二个变量是一个用所指示的字符串文字的内容初始化的数组,加上\0字符以完成数组大小,直到填充数组的100个字符空间。

添加c变量内容的几种方法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/* check first that array has space to store data */
int l = strlen(array);
if (l + 1 < sizeof array) {
    array[l] = c;
    array[l+1] = '\0';
}

另一种方法(如果不需要知道操作是否成功,并且只在空间被分配时追加字符)是在字符串值的末尾snprintf(3)字符( snprintf(3)正确地控制空格)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int l = strlen(array); /* number of chars in string */
snprintf(array + l,  /* char pointer at string end */ 
    sizeof array - l, /* the number of chars of space available */
    "%c",  /* format string to print a character */
    c);  /* data character to append */

顺便说一下,snprintf(3)的返回值是打印的字符数,因此如果它成功工作,它应该是1,如果数组中没有空间来打印c变量和最终的\0字符,则应该使用0,这样就可以检查操作的结果了。

备注

如果节点结构中有一个char *指针,因为您动态地分配内存来存储字符串值(例如,使用strdup(3)函数),那么就没有空间在末尾追加任何字符,因为strdup(3)只分配足够的空间来存储原始字符串的完整副本(字符,加上末尾的额外\0 )(即使该字符串最初存储在更大的字符数组中),在这种情况下,追加字符的唯一方法是分配一个足够大小的新数组,并将所有字符复制到新位置。小心,如果你在每个字符的基础上这样做,你的效率会受到严重影响。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48199297

复制
相关文章
java中数组转列表_Java数组转list
1.1 该方法返回的是数组的一个视图,对这个list的操作都会反映在原数组上,而且这个list长度是跟原数组一样是固定的,转换后的列表不支持add、remove等改变长度的方法
全栈程序员站长
2022/09/23
1.9K0
java中数组转列表_Java数组转list
JS数组追加数组采用push.apply的坑
本文讲述了一个JS数组在追加数组时采用push.apply的坑,以及在遇到大数组时如何避免这个坑。作者通过实际例子分析了在遇到大数组时采用forEach方法代替apply方法的好处,并建议在实际开发中尽量使用forEach方法。同时,作者提醒开发者不要将花哨的用法用于实战,而是应该多走老实路线,避免遇到异常和性能问题。
HT for Web
2018/01/03
3.7K0
JS数组追加数组采用push.apply的坑
多维数组追加,修改,查询,删除
找到指定元素进行修改,查询,删除,追加,和一维数组操作实际一样,关键找到需要修改多维数组需要修改元素的位置。修改代码演示:
十月梦想
2018/08/29
1.5K0
字符数组反转_字符数组的初始化
关于字符串的反转,倒是很简单,但是编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
全栈程序员站长
2022/08/18
1.1K0
原 荐 JS数组追加数组采用push.app
JS数组追加数组没有现成的函数,这么多年我已经习惯了a.push.apply(a, b);这种自以为很酷的,不需要写for循环的写法,一直也没遇到什么问题,直到今天我要append的b是个很大的数组时才遇到了坑。 a = new Array();      b = new Array(125624);                      a.push.apply(a, b); 以上的代码在mac的chrome下抛出了如下的异常 Uncaught RangeError: Maximum call sta
HT_hightopo
2018/06/05
2.5K0
C语言数组——字符数组
字符数组顾名思义就是数组的元素类型为字符型的数组。特殊之处在于它是数组元素为字符的数组。其定义的一般形式和注意事项与之前讲解的一般数组类似,只是其中的类型说明符是char。当然,并不是说类型说明符只能是char,也可以是long、int等,但是由于char型只占用一个字节的大小,使用long型和int型来定义字符数组会造成资源的浪费,因此一般选择使用char型来定义字符数组。
C语言中文社区
2022/05/30
7.6K0
C语言数组——字符数组
ASP数组排序_字符数组
<% ‘===================================== ‘作者:80端口,阿里西西 ‘时间:2005-12-23 ‘作用:对数据进行重新排序 ‘===================================== Function NewOrder(sz) Dim ali,icount,i,ii,j,itemp ali=split(sz,”,”) icount=UBound(ali) For i=0 To icount For j=icount – 1 To i Step -1 If j+1 <= UBound(ali) Then If int(ali(j))<int(ali(j+1)) Then itemp=ali(j) ali(j)=ali(j+1) ali(j+1)=itemp End If End If Next Next For ii=0 to Ubound(ali) If ii = Ubound(ali) Then NewOrder = NewOrder & ali(ii) Else NewOrder = NewOrder & ali(ii) & “,” End If Next End Function %>
全栈程序员站长
2022/11/01
3.4K0
从列表中或数组中随机抽取固定数量的元素组成新的数组或列表
2:jQuery版本 那么jQuery中怎么随机选出固定数组数组[1, 2, 3, 4, 5, 6, 7, 8, 9]中的三个元素,并构造成新数组的?
王小婷
2018/08/02
6K0
字符数组
char message[5] = {'H', 'e', 'l', 'l', 'o'};
pigeon
2022/04/11
4580
字符数组
[每日一题]字符数组
前面的题基本都是数组里面存数字,相信大家也基本练习的差不多了,今天给大家推荐的一题呢,比较简单,但可以算是数组存字符的一个开始吧!懂的同学可以忽略! 题目描述 有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。 输入 数字n 一行字符串 数字m 输出 从m开始的子串 样例输入 6 abcdef 3 样例输出 cdef PS:详细题解见C语言网1048题 另外,有兴趣的同学还可以加入C语言网官方微信群,一起讨论C语言 有找密码或者其他问题也可以到里面找相关人员解
编程范 源代码公司
2018/04/18
8960
C语言数组——字符数组
C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C语言基础-第一个C程序 C语言基础-简单程序分析 VS2019编写简单的C程序示例 简单示例,VS2019调试C语言程序 C语言基础-基本算法 C语言基础-数据类型 C语言中的输入输出函数 C语言流程控制语句 C语言数组——一维数组 C语言数组——二维数组
全栈程序员站长
2022/09/08
6.2K0
C语言数组——字符数组
C/CPP结构中的字符数组和字符指针
一般情况下我们在结构中都使用字符数组来存储字符串,是否可以使用指向char的指针来代替字符数组呢?
CtrlX
2022/10/04
1.5K0
列表(List)中数组实现(ArrayList类)
同样基于数组实现,会在内存中开辟一块连续的空间来存储。ArrayList是非线程安全的,效率高;Vector是基于线程安全的,但效率低,并且是方法级别的同步,不是绝对的线程安全。   初始容量10,每次数组扩展到原来容量的2倍(每次扩充的容量大小是可以设置的,而ArrayList类不支持设定)。
用户7999227
2021/10/07
9390
后缀数组(suffix array)在字符串匹配中的应用
首先抛出一个问题: 给定300w字符串A, 之后给定80w字符串B, 需要求出 B中的每一个字符串, 是否是A中某一个字符串的子串. 也就是拿到80w个bool值.
呼延十
2020/01/02
6.7K1
【进阶指针一】字符数组&数组指针&指针数组
目录 1.初阶指针内容回顾 2.字符指针 2-1 字符指针长什么样? 2-2 误区: 2-3  代码一和代码二的异同: 2-4 关于字符常量区: 2-5 一道为了区分栈区和字符常量区&&字符数组和字符指针的面试题:  3.指针数组 3-1 指针数组长什么样捏? 3-2 初级使用(或者说给你看一下基本使用): 3-3这才是指针数组的正确使用方法!【指针数组模拟打印二维数组】  4. 数组指针 4-1 区分取地址数组名和数组名(老生常谈了) 4-2 辨析数组指针和指针数组  4-3 学会了?来看一个小测试
MicroFrank
2023/01/16
9690
LeetCode 2195. 向数组中追加 K 个整数(贪心)
给你一个整数数组 nums 和一个整数 k 。 请你向 nums 中追加 k 个 未 出现在 nums 中的、互不相同 的 正 整数,并使结果数组的元素和 最小 。
Michael阿明
2022/11/26
6180
LeetCode 624. 数组列表中的最大距离
给定 m 个数组,每个数组都已经按照升序排好序了。 现在你需要从两个不同的数组中选择两个整数(每个数组选一个)并且计算它们的距离。 两个整数 a 和 b 之间的距离定义为它们差的绝对值 |a-b| 。你的任务就是去找到最大距离
Michael阿明
2020/07/13
2K0
数组、列表及字符串如何相互转换?
数组、列表及字符串,是最常用的数据类型。为了操作方便,很多时候,需要进行相互转换。但它们的转换方法总是记不住,能不能帮我们总结一下,它们之间相互转换的方法。
高一峰
2020/09/22
1.5K0
数组、列表及字符串如何相互转换?
5.3 字符数组
注意:用“”%s”格式符输入输出字符串时,printf函数中的输出项是字符数组名而不是数组元 素名
小林C语言
2019/08/19
5590
6.3 字符数组
1、对字符数组初始化,最容易理解的方式是用“初始化列表”,把各个字符依次赋给数组中各元素。
小林C语言
2019/07/12
6530

相似问题

Java:如何遍历类型链接列表的数组并将其追加到数组中

22

在C中向字符数组追加字符

12

到链接列表的字符数组--使用数组中的地址

12

追加列表、数组、矩阵

31

在for循环中追加列表数组

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文