我正在尝试创建一种方法,在给定多个字符串的情况下,将它们合并在一起。现在,这就是我想出的。 main 纯粹是为了测试,所以最后我一次只有一个部分字符串,该部分在完整字符串中的位置,以及我需要放置这些部分的最终字符串。
int mergeParts(char* text, char* part, int position){
int printSpot = position * CONTENTSIZE;
strcat(text[printSpot], part);
printf("%s\n", text);
return 0;
}
现在,这段代码的问题是段错误,我尝试了多种方法,但唯一似乎有效的方法是使用 strcat(text, part);
而不使用“位置”必须复制其中的字符串部分。
#define CONTENTSIZE 10
int main(){
int i;
char* part1 = "This is a ";
char* part2 = "test with ";
char* part3 = "something ";
char* part4 = "that i wro";
char* part5 = "te in it";
int totParts = 5;
char* parts[totParts] = {part1,part2,part3,part4,part5};
int stringSize = totParts * CONTENTSIZE;
char* finalString = malloc(stringSize);
for(i = 0; i<totParts; i++){
mergeParts(finalString, parts[i], i);
}
return 0;
}
我怎样才能做到这一点,为字符串指定复制部分的位置。
我可以给你一个很好的例子来更好地解释我正在寻找的是:
我有一个空字符串"----------------------------"
我必须在里面写“This”; “是一个”; “考试”; “请”; “f”; "文本";
如果我收到 "exam";
,我的字符串中的结果必须是 "------------ exam-------- ------"
。
然后我收到“文本”;所以结果将是 "------------ exam------------ text"
依此类推,直到我得到 "This is an example of the text";
最佳答案
似乎strcat(text[printSpot], part);
是重点。我认为你应该使用 strcat(&(text[printSpot]), part);
反而。 text[printSpot]
将具有实际的字符数据,如 'e'
,而不是 strcat
所需的字符串地址.
或者您可以使用 strcat(text+printSpot,part)
很简单。
关于创建一个用零填充的特定维度的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49197349/