繁体   English   中英

使用 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;

单字大小为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM