如何解决使用strcat在单个字符串中复制n个单词
如何使用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
警告,如果您说的是长度而不是大小,包括终止的空字符,则需要再分配一个:
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 大的 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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。