我有一个关于 C 语法的非常简单的问题。
我正在尝试将一些静态字符串与动态字符串合并。
例如,我得到了一个具有以下原型(prototype)的 C 函数:
uint8_t AT_feedback_checker(const char my_str[], const char ATcmd[],
uint32_t time_out_ms, uint8_t mode);
我将我的函数称为
if (AT_feedback_checker(PSTR("OK"), PSTR("AT+HTTPPARA=\"URL\",\"https://djblob.blob.net/mycontainer/myFirstDevicea.txt\" "),2000,0) == AT_REPLY_STATUS_FOUND_AT_REPLY)
我想动态更改字符串的文件名部分。
例如a.txt
或b.txt
(而不是myFirstDevicea.txt
)。文件名可以更改。
如何设置函数或语法,使字符串的起始部分是特定文本,其余部分可以是我选择的任何内容,例如文件名?
有人能给我举个例子吗?
最佳答案
经典的 C 习惯用法是使用临时字符串和诸如 snprintf
之类的工具:
char cmd[128]; // choose a "large enough" size
snprintf(cmd, sizeof cmd,
PSTR("AT+HTTPPARA=\"URL\",\"https://djblob.blob.net/mycontainer/%s\" "),
file_name);
if (AT_feedback_checker(PSTR("OK"), cmd, 2000, 0)
== AT_REPLY_STATUS_FOUND_AT_REPLY)
...
snprintf
将避免在文件名太大的情况下溢出临时缓冲区。在生产代码中,您还可以检查 snprintf
的返回值,并在这种情况下报告错误。
关于字符串操作的 C 语法建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46506498/