我有一个函数
void add_car(char *car) {
park.buffer[park.size] = car;
park.size ++;
}car是一个类似于"XYZ“的字符串。Atm,它似乎将停车场缓冲区数组元素分配给一个地址。因此,如果我用10辆汽车填充数组,我会得到10辆汽车,但每一辆都是最新的一辆,因为汽车的地址被覆盖了。如何用一辆汽车的实际价值填充我的carpark.buffer?
完全思维空白自动取款机
发布于 2010-09-10 09:59:16
假设park.buffer是一个char*数组,您可能希望使用
park.buffer[park.size] = strdup(car);请注意,这将不可避免地创建一个副本(如果您不希望对car的进一步更改影响park.buffer,则是必不可少的!)由park拥有(这意味着,完成后,您必须从那里free它,因为strdup当然也隐式地执行malloc和strcpy;-))。
顺便说一句,为了使用strdup,你需要在你的文件顶部使用#include <string.h> (如果你还没有这样做的话)。
发布于 2010-09-10 09:56:37
要在C中复制一个“字符串”,你需要使用strcpy,而且你不想把它复制到park.buffer的末尾,你可能想把它复制到第0个位置。
发布于 2010-09-10 09:57:29
在没有更多上下文的情况下,很难确切地说出你在做什么。但我假设park.buffer是一个指针数组。
,因为car的地址已被覆盖
没有覆盖car的地址。
此外,对于如何使用add_car函数,您应该非常小心。如果你一直在调用它,你可能会覆盖不属于你的内存。此外,您还需要注意传递给此函数的内容不会被释放,因为您正在捕获它的地址。
不过,关于=设置字符串的地址,而不是复制整个字符串的做法是正确的。
https://stackoverflow.com/questions/3681832
复制相似问题