如何在C中替换数组中特定但不断变化的一系列字符



我正在处理两个不同的程序,但两者都有相同的问题。我有一个char数组(不包含有意义的文本),用于在屏幕上绘制内容。第一个用于显示进度的比赛线,另一个用于可以修改的区域地图
我要做的是覆盖数组的部分,而不是整个数组,而不更改数组的大小。例如,如果array1看起来像|..........|,并且我想在位置3添加一棵倒下的树,在位置10添加一块岩石,那么它将变为|..-->>>..@|。我在标题中对"特定"的意思是,要替换的字符数量由我给定或在执行过程中确定,而不是调用一个自动知道何时停止的函数
我想用for循环来做,比如:

char tree[5] = "-->>>";
char map[12] = "|..........|";
int offset = 3; //position from which to start replacing characters
object_size = sizeof(tree) / sizeof(char); //to get the length of the object to be added
for (int i = 0; i < object_size; i++) {
map[offset + i] = tree[i];
}  

有更干净的方法吗?我确信肯定已经有一个函数可以做到这一点,但我发现的大部分都是其他语言的。这个想法是能够使用二维数组来存储地图并修改更大的区域。

如果我理解正确,您不想复制终止null。要使用的标准库函数是void *memcpy(void *dest, void *src, size_t size),它将size字节从src精确复制到dest

但是必须确保dest有足够的空间来接受大小字节的

您可以查看

https://www.tutorialspoint.com/c_standard_library/string_h.htm

对你来说,

char *strcpy(char *dest, const char *src)
char *strncpy(char *dest, const char *src, size_t n)

它们可以让你的代码更干净,但我认为在内心深处,它们会做你手动做的事情。

相关内容

最新更新