迭代并加入char阵列
Iterate and join char arrays
我有两个char数组,我试图通过字符加入字符。这是一个插图示例:
both[10]
|
|______both[0]
|_____one[0]
|
both[1]
|_____two[0]
|
both[2]
|_____one[1]
|
..etc..
我尝试使用两个循环,但这对于第二个数组不起作用。尽管我没有找到解决方案,但这可能很简单。
char one = "ji-hs";
char two = "onti";
char both[10];
for (int i = 0; i < 10; ++i) {
memcpy(&both[i], &one[i], 1);
}
for (int i = 0; i < 10; ++i) {
memcpy(&both[i+1], &two[i], 1);
}
两个阵列连接在一起应该读取join-this
如果我正确理解您:
char *one = "ji-hs";
char *two = "onti";
char both[11];
for (int i = 0; i < 5; i++) {
both[i*2] = one[i];
both[i*2+1] = two[i];
}
both[10] = 0;
注意传递输入字符串的界限 - 如果one = "ji-hs"
,它只有6个字符(您声明的5个字符,以及最后一个' '
。样式字符串起作用)。如果仅存储6个元素,则尝试访问第9元素是没有意义的。您的for loops访问one[i]
的i
范围为0-9的所有值 - 意味着它们也将访问one[9]
。
尝试在单个循环上使用模量函数来确定它是奇数还是偶数。模量基本上返回其剩余的论点。
由于所有奇数索引都应具有two
的值,而所有索引都应具有one
的值,因此您可以使用Modusus Operator的结果来确定从何处复制您的值。请注意,整数除法截断结果(SO 5/2 = 2)
我尚未测试过,但它显示了基本思想:
char one = "ji-hs";
char two = "onti";
char both[10];
for (int i = 0; i < 10; ++i) {
if (i % 2)
both[i] = two[i/2];
else
both[i] = one[i/2];
}
它不会出于简单的原因而无法使用,请参阅您的代码并尝试了解您在做什么,您将Array 一个复制到>>均在第一个循环中,然后是您将数组将两个复制到第二个循环中,这就是为什么您没有获得所需的输出。
您可以尝试这种方式
int k=0,i=0,j=0,flag=1;
while(i<strlen(one) && j<strlen(two)) {
if(flag) {
memcpy(&both[k],&one[i],1);
k++; i++;
flag=0;
}
else {
memcpy(&both[k],&two[j],1);
k++; j++;
flag=1;
}
}
for(;i<strlen(one);i++)
memcpy(&both[k],&one[i],1);
for(;j<strlen(two);j++)
memcpy(&both[k],&two[j],1);
相关文章:
- Arduino(C )condenate char*阵列与float数组
- char,const char*阵列问题,用于mqtt client.publish
- 为什么Xor-ing两个“ char”阵列显示垃圾位
- 从char阵列中提取十六进制数字
- 我如何使我的循环转到char*阵列的尽头,并将每个城市都放在链接的列表中(城市被划分为白色的空间)
- CIN正在为char阵列工作,但不为int阵列工作
- 为什么在使用SizeOf进行同一char阵列时会得到各种结果
- 如何打印char阵列的地址
- 如何将char阵列的中间单词更改为向后
- 我如何格式化十六进制中“未签名char”阵列的值
- 创建char阵列时,其长度与所需的长度不同
- C 2D char阵列有时会在随机位置复制数据
- 如何创建一个构造函数,该构造函数吸收char阵列
- Char阵列中的特定索引的C 拉动签名整数
- 在C 中乘以两个char阵列
- 无效的char阵列分配
- 如何使用3D char数组调整双指针2D char阵列的大小
- 为什么这两个char阵列不相等
- 使用Strcat的2个char阵列的串联
- Qthread char阵列在两个线程之间传递后被摧毁