我是C语言的初学者,并将其作为大学课程的一部分进行学习。给我们的实践问题之一是要求我们创建一个函数,该函数返回用户定义的字符串,该字符串前后带有连字符('-')字符。用户还将定义字符总数。该函数将被称为“ center”,并将被调用如下:center(char userString [],totalLength)。因此,如果userString =“ cat”且totalLength = 5,则center应该返回“ -cat-”。
中心功能可以正常工作。它创建一个带有连字符的字符串。但是,当尝试打印时,我在输出中看到奇怪的字符。在讲座中有人告诉我有关内存泄漏的信息,但是我尝试分配和释放内存。
中心功能:
char *center(char s[],int totalLength){
int dashes = totalLength-strlen(s);
int i;
char* ret=malloc(totalLength+1);
int left = dashes/2;
for(i=0; i<left; i++){
ret[i]='-';
}
for(i=left;i<strlen(s)+1;i++){
ret[i]=s[i-left];
}
for(i=strlen(s)+left;i<totalLength;i++){
ret[i]='-';
}
ret[totalLength+1]='\0';
return ret;
}
主要功能:
int main(void) {
char s[] = "cat";
char *ret=malloc(100);
ret = center(s,5);
printf("%s\n",ret);
free(ret);
ret = center(s,6);
printf("%s\n",7);
printf("%s\n",ret);
free(ret);
return 0;
}
实际输出:
-cat-
-cat--o
--ca└--
预期输出:
-cat-
-cat--
--cat--