【发布时间】:2014-05-26 05:00:28
【问题描述】:
基本上我有这样的东西(这是一个工作序列):
char *command; // pointer to transmit buffer
command = "RST; ISET 0.10A; VSET 0.00V; OUT OFF\r";
transmit_command(PORT, command, 0);
从概念上讲,我希望能够灵活地以如下方式更新命令:
float = current_setting;
float = voltage_setting;
command = "RST; ISET " + current_setting + "A; VSET " + voltage_setting + "V; OUT OFF\r":
transmit_command(PORT, command, 0);
我对 C 语言中的指针操作不太了解,所以我的实验没有运气。我尝试了 strcpy、strcat 和 sprintf,但我的代码崩溃了,因为我认为这是因为 command 只是一个指针。
任何帮助将不胜感激。
【问题讨论】:
-
确实,您的
sprintf代码正是您所需要的。向我们展示这一点。您可能只需要分配一个目标缓冲区,例如char buffer[128]。你可以做一个简单的堆栈分配。 -
如果您真的需要空间,并且您将始终准确地以这四个字符(个位、小数点、十分位和百位)报告电流和电压,您无需使用大缓冲区,只需用已经填充的大部分内容覆盖字符串数组。
-
此外,仅针对这种情况滚动您自己的代码可能会让您省略
printf()和弟兄们的代码,而且运行速度更快。
标签: c string pointers concatenation