【发布时间】:2014-08-03 21:45:24
【问题描述】:
我遇到了重叠 char* 的问题。
我在低内存环境中工作,即 Arduino,我希望使用尽可能少的内存。我希望能够在一个字符串前面加上另一个字符串,并且不复制任何浪费内存的变量。
这是标准的 C 或 C++。
char* bigPacket = (char*)malloc(25); //Makes a big string of length 25
char* payload = bigPacket + 2; //This is part of the big string, 2 chars in.
bigPacket[0] = 72; // Letter 'H'
bigPacket[1] = 72; //I'm expecting the final bigPacket to read "HHHello, world"
payload = "Hello, World";
print(bigPacket);
但问题是它没有打印出应有的“HHHello, world”。相反,它只打印“HH”。有没有合适的方法让它能够重叠这些字符串来打印“HHHello,world”?
【问题讨论】:
-
你熟悉
strcpy吗? -
您将指针指向某个字符串文字并期望它复制字符串文字?这里需要strcpy、memcpy等。
-
payload = ..行不是“标准 C”,如果payload是cstring,则只有标准 C++。 -
@Jongware:它怎么不是标准C(虽然不是预期的)? (无论如何,它肯定不是标准的 C++)。
-
您似乎只是不明白这行代码的作用:
payload = "Hello, World";。一旦你理解了它的作用,你应该很清楚如何编写代码来完成你期望那行代码做的事情。