【发布时间】:2017-12-18 21:33:41
【问题描述】:
我想连续添加字符串元素,例如st[]="morty",我想重复它的元素例如七次。应该是st[]="mortymo"。我写了一个函数,它在下面。 (长度函数为strlen)。
void repeat(char* st,int n){
int i,k=0,l=length(st);
char* ptr;
ptr=(char*)malloc((n+1)*sizeof(char));
for (i=0;i<n;i++){
*(ptr+i)=*(st+k);
k++;
if(k==l)k=0;
}
}
【问题讨论】:
-
您分配内存并将其地址存储在
ptr中,但随后您在函数结束时丢弃了ptr。这不仅会泄漏内存,还会丢弃您的操作结果。你不应该返回ptr吗? -
你也想用空终止你分配的字符串。
-
它现在做什么与它应该做什么?
-
@Zusaetlich "...例如 st[]="morty",我想重复它的元素,例如七次。它应该是 st[]="mortymo"。" - 哪些元素重复了 7 次?