4

我正在尝试仅将字符串(或 char *)的一部分复制到另一个字符串(或另一个 char *)中

char * first_string = "Every morning I"
char * second_string = "go to the library, eat breakfast, swim."
char * final_string;

我想将第二个字符串的一部分复制到第一个字符串中。

例如:

每天早上我都吃早餐。

什么函数允许您从字符串中的特定点开始仅复制字符串的一部分?

注意:如果可能的话,我不想使用字符串变量,而是 char *,甚至 char 数组。

4

5 回答 5

7

它是std::copy,但是使用您的代码会导致未定义的行为,因为您有指向字符串文字的指针,这是非法修改的。

你需要类似的东西

char first_string[256] = "Every morning I";
char second_string[256] = "go to the library, eat breakfast, swim.";

std::copy(
    &second_string[23],
    &second_string[36],
    &first_string[strlen(first_string)]
);

指数可能会关闭。

于 2012-11-26T18:38:24.080 回答
4

如果你真的想,使用 strcat (如果你不使用字符串,你应该可以使用 C 函数):

const char * first_string = "Every morning I";
const char * second_string = "go to the library, eat breakfast, swim.";
char final_string[80]; // make sure it's big enough - I haven't counted ;-)

strcpy(final_string, first_string);     // copy to destination
strcat(final_string, second_string+18); // append part of the second string
于 2012-11-26T18:48:48.897 回答
1

我会像这样使用'strncat()':

const char * first_string = "Every morning I";
const char * second_string = "go to the library, eat breakfast, swim.";

char final_string [200];

//Copies first string first
strcpy(final_string, first_string);

//Copies second string
strncat(final_string, second_string[ text_position ], text_length);

替换为您可能要开始复制文本text_position的位置,并替换为您要复制的文本部分的长度。second_stringtext_length

这样,您可以复制文本的单独部分,而不必从字符串的某个点复制到末尾。

于 2012-11-26T19:03:27.027 回答
1

您可以使用带有 "," 的 strtok 作为分隔符来分隔第二个字符串的各个部分,然后使用 strcat 将该部分附加到第一个字符串上

于 2021-10-22T19:12:46.143 回答
0

您可以使用strstr()搜索所需部分的开头,然后strcat()进行连接。

char * first_string = "Every morning I";
char * second_string = "go to the library, eat breakfast, swim.";
char * final_string;

char* s = "eat";
char* r = strstr(second_string, s);

strcat(final_string, first_string);
strcat(final_string, " ");
strcat(final_string, r);
于 2012-11-26T18:53:49.500 回答