gpt4 book ai didi

c - 在C中合并两个不同大小的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 08:04:29 25 4
gpt4 key购买 nike

如何将两个不同大小的字符串逐个字符合并到 A 的第 n 个元素和 B 的第 m 个元素。当它们具有相同的大小时,我可以很容易地做到这一点(假设这里 n=m)。但是无法弄清楚如何处理这个异常。

我的工作 zip 代码如下:

char * zip(char *A, char *B, int n)
{
char *C;
int i;

C = malloc((2*n) * sizeof *A);

for(i=0; i<n; i++) {
C[(2*i)]=A[i];
C[(2*i)+1]=B[i];
}

return C;
}

但是为了传递 int n,我还想传递 int m 其中 n 是合并 n A 的第一个元素和 Bm 个第一个元素。因此将以下输入传递给 new_zip(char *A, char *B, int n, int m)A="rslxyzkw"; B="eutingxyz";n=3; m=6,我会得到 "resulting"

最佳答案

像这样:

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

char *new_zip(char *A, char *B, int n, int m){
assert(A != NULL && B != NULL && n >= 0 && m >= 0);
char *C = malloc(n + m + 1);//+1 for NUL
if(!C){
perror("malloc:");
return NULL;
}
int i = 0;

while(n + m > 0){
if(n > 0 && *A){
C[i++] = *A++;
--n;
}
if(m > 0 && *B){
C[i++] = *B++;
--m;
}
}
C[i] = 0;
return C;
}

int main (void){
char *result = new_zip("rslxyzkw", "eutingxyz", 3, 6);
printf("'%s'\n", result);
free(result);
return 0;
}

关于c - 在C中合并两个不同大小的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43838910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com