[英]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;
单字大小为40
如果您谈论长度而不是大小,包括终止 null 字符,则警告您需要再分配一个:
fin = malloc(n*40 + 1);
从你的评论中:
此外,它都是无空格连接的,我如何在每个单词之间添加它们?
如果要添加空间,则需要分配更多空间并显式添加空间,可以是:
fin = malloc(n*41+1);
*fin = 0;
for(i=0;i<n;i++){
strcat(fin, arr[i]);
strcat(fin, " ");
}
请注意,如果n large strcat搜索越来越长的fin的末尾,最好将指针保存到末尾并使用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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.