我在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
,但使用这种方法你甚至不需要它