[英]Concatenate separated char** elements in C
我有以下情況:
An initial char* original_string = "@person Hello person; Welcome to the chat!";
我需要使用"@person"
部分,所以我有一個拆分 function 將采用original_string
並將其拆分為空格。 基本上char** split_original_string = split_string(original_string, " ");
將返回:
split_original_string[0] = "@person";
split_original_string[1] = "Hello";
split_original_string[2] = "person!";
split_original_string[3] = "Welcome ";
split_original_string[4] = "to";
split_original_string[5] = "the";
split_original_string[6] = "chat!";
從現在開始我有@person
我很高興! 但我意識到消息應該是original_string
的 rest 意思是"Hello person! Welcome to the chat!"
.
我試圖使用類似的東西
char* message = malloc(256); // 256 is just for testing purposes
strncpy(message , original_string + strlen(split_original_string[0]), strlen(original_string ));
但它導致空char*
因為顯然當將original_string
傳遞給split_original_string
function 時,它發生了變化,並且它的長度等於split_original_string[0]
的長度。
我的問題是:有沒有辦法使用for
循環或任何其他循環將char**
元素的 rest 連接到單個char*
中?
任何幫助表示贊賞!
在這里,您有一個輕量級的程序來歸檔它。 沒有外部功能
char *mySpecialstrcat(char *str, const char *src, int appendSpace)
{
while(*str++ = *src++);
if(appendSpace) *(str - 1) = ' ';
*str = 0;
return str;
}
char *combine(char *buff, char **strings)
{
char *end = buff;
while(*strings)
{
end = mySpecialstrcat(end, *strings, strings[1] != NULL);
strings++;
}
return buff;
}
int main(void)
{
char *buff = malloc(256);
char *split_original_string[8];
split_original_string[0] = "@person";
split_original_string[1] = "Hello";
split_original_string[2] = "person!";
split_original_string[3] = "Welcome ";
split_original_string[4] = "to";
split_original_string[5] = "the";
split_original_string[6] = "chat!";
split_original_string[7] = NULL;
printf("%s\n", combine(buff, split_original_string));
free(buff);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.