我需要在C中构建一个函数,它接收两个字符串str1和str2并返回一个串联str1和str2的字符串,但我需要丢弃str1的最后一个元素,它们等于str2的第一个元素
示例1:
str1 = ccabcc
str2 = ccbabd
result : ccabccbabd
示例2:
str1 = abbcbf
str2 = ab
Result : abbcbfab
有时没有重叠。
答案 0 :(得分:0)
这个问题很简单。就个人而言,我会选择这样的东西(伪代码):
function(str1,str2)
int j = 0
int lstr1 = lenght of str 1
int lstr2 = lenght of str 2
while(true)
if(str1[lstr1 - j] == str2[j])
j++
else
break
return str1 + str2[j to end of string]
如果我没有犯逻辑错误,那么代码应该看起来像是将str 1的结尾与str 2的开头和增量进行比较的东西。另外,我的伪代码没有考虑字符串长度和潜在的溢出错误。
答案 1 :(得分:0)
I hope this is what you need:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
char *concate(char *first, char *second){
size_t len1 = strlen(first);
size_t len2 = strlen(second);
char *res = (char *)malloc(len1 +len2 +1);
if(res==NULL){
exit(1);
}
if(first[len1-1] == second[0]){
first[len1-1] = 0;
second++;
}
strcpy(res,first);
strcat(res,second);
return res;
}
int main(void){
int i = 0,len = 0;
char arr[] = "ccabcc";
char arr2[] = "ccbabd";
char *res = concate(arr,arr2);
while(res[len] != '\0'){
len++;
}
for(i=0;i<len;i++){
printf("%c",res[i]);
}
printf("\n");
free(res);
return 0;
}
Output:
ccabccbabd
答案 2 :(得分:-4)
int main(){
char a[256], b[256];
printf("Enter 1st string\n");
gets(a);
printf("Enter the 2nd string\n");
gets(b);
strcat(a,b);
printf("String concatenation is %s\n",a);
}