使用 strcat 在单个字符串中复制 n 个单词
Copy n words in a single string using strcat
如何使用 strcat 在单个字符串中复制 n 个不同的单词?这是我的代码,但不起作用。单个单词的大小是 40。arr
包含不同的单词,fin
是我的最终字符串。
char *cat(char **arr,int n){
int i;
char *fin;
fin = malloc(n*40);
for(i=0;i<n;i++){
strcat(arr[i],fin);
}
return fin;
}
要连接来自 arr info fin 的字符串,您需要颠倒参数的顺序,因此替换
strcat(arr[i],fin);
来自
strcat(fin, arr[i]);
因为第一个参数是目标,第二个参数是源。
但是假设初始化 fin 为一个空字符串,所以在循环之前做
*fin = 0;
The size of the single words is 40
警告,如果您谈论的是长度而不是大小,包括终止空字符,您需要再分配一个:
fin = malloc(n*40 + 1);
根据您的评论:
Moreover it is all joined without space how can i add them between each word?
如果你想添加一个 space 你需要分配更多并明确添加你的 space,可以是:
fin = malloc(n*41+1);
*fin = 0;
for(i=0;i<n;i++){
strcat(fin, arr[i]);
strcat(fin, " ");
}
note if n large strcat search the end of fin which is more and more很长,最好将指针保存到末尾并使用 strcpy,例如:
char * fin = malloc(n*41+1);
if (n == 0) {
*fin = 0;
}
else {
char * p = fin;
for(i=0;i<n;i++){
strcpy(p, arr[i]);
p += strlen(p) + 1;
p[-1] = ' ';
}
p[-1] = 0;
}
return fin;
如何使用 strcat 在单个字符串中复制 n 个不同的单词?这是我的代码,但不起作用。单个单词的大小是 40。arr
包含不同的单词,fin
是我的最终字符串。
char *cat(char **arr,int n){
int i;
char *fin;
fin = malloc(n*40);
for(i=0;i<n;i++){
strcat(arr[i],fin);
}
return fin;
}
要连接来自 arr info fin 的字符串,您需要颠倒参数的顺序,因此替换
strcat(arr[i],fin);
来自
strcat(fin, arr[i]);
因为第一个参数是目标,第二个参数是源。
但是假设初始化 fin 为一个空字符串,所以在循环之前做
*fin = 0;
The size of the single words is 40
警告,如果您谈论的是长度而不是大小,包括终止空字符,您需要再分配一个:
fin = malloc(n*40 + 1);
根据您的评论:
Moreover it is all joined without space how can i add them between each word?
如果你想添加一个 space 你需要分配更多并明确添加你的 space,可以是:
fin = malloc(n*41+1);
*fin = 0;
for(i=0;i<n;i++){
strcat(fin, arr[i]);
strcat(fin, " ");
}
note if n large strcat search the end of fin which is more and more很长,最好将指针保存到末尾并使用 strcpy,例如:
char * fin = malloc(n*41+1);
if (n == 0) {
*fin = 0;
}
else {
char * p = fin;
for(i=0;i<n;i++){
strcpy(p, arr[i]);
p += strlen(p) + 1;
p[-1] = ' ';
}
p[-1] = 0;
}
return fin;