【发布时间】:2015-07-15 17:11:39
【问题描述】:
函数getFree() 我在一个类似问题的答案中看到了它,但是字符串cpy 在它运行的次数(即T 次)中仍然具有第一次给出的相同字符串。所以,请有人帮忙。
void getFree(char ** ptr) {
if (*ptr != NULL) {
free(*ptr);
}
return;
}
int main() {
int T, j;
scanf("%d", &T);
for (j = 0; j < T; j++) {
char * cpy,
int count = 0, i = 0, x = 0, k = 0;
cpy = (char*)malloc(500 * sizeof(char));
if (getchar() == '\n') {
do {
*(cpy + i) = getchar();
i++;
} while(*(cpy + i - 1) != '\n');
}
getFree(&cpy);
printf("%s", cpy);
}
return 0;
}
【问题讨论】:
-
代码到底做了什么你没想到的?你期待什么?
-
不要在 C 中转换
malloc。 -
对不起,我只是想知道每次for循环运行时如何更改字符串。
-
你做的 - 它是同一内存中的一个新字符串。不过,您没有将内存归零或终止字符串。也许你可以表现出你不喜欢的特定行为?