如何确保我的副本[i]不会指向C编程语言中的相同内存地址



我在C中使用数组时遇到问题。如何确保我的副本[I]不指向同一内存地址?基本上,我的charCount变量会更改其值,我想将其存储在一个数组中。它是有效的,但正如你在图中看到的,它改变了初始值,因为它指向相同的内存地址,这不是我想要的。我该怎么修?请帮忙!!

错误

这是我的代码:代码第1部分代码第2部分代码第3部分

据我所知,您希望确保copy[i]对于i的不同值具有不同的charCount变量值。你可以看到,在你的代码中,你有一行:

copy[i] = charCount;

你把charCount定义为

char charCount[100] = "";

在此上下文中,charCount是指向包含存储在那里的值的存储器位置的指针。这意味着当将copy[i]设置为charCount时,将copy[i]值设置为charCount的指针值,而不是其内容。

您不需要将copy[i]设置为charCount,而是需要在每次设置copy[i]时分配一个新的100字节。您可以使用malloc语句来执行此操作。

例如,不进行

sprintf(charCount, "%d", count);
strcat(charCount, "t");
strcat(charCount, file_name);
strcat(charCount, "n");
copy[i] = charCount;

你可以写

char * newStr = malloc(sizeof(char) * SIZE);
sprintf(newStr, "%d", count);
strcat(newStr, "t");
strcat(newStr, file_name);
strcat(newStr, "n");
copy[i] = newStr;

我不知道你是否在其他地方使用charCount,但使用这种方法你甚至不需要它

最新更新