字符串操作建议的C语法?

时间:2017-09-30 19:50:46

标签: c string syntax

关于C语法我有一个非常简单的问题。

我正在尝试将一些静态字符串与动态字符串合并。

例如我有一个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.txtb.txt(而不是myFirstDevicea.txt)。文件名可以更改。

如何设置函数或语法,以便字符串的起始部分是特定文本,剩余部分可以是我选择的任何内容,例如文件名?

有人能告诉我一个例子吗?

1 个答案:

答案 0 :(得分:1)

经典的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的返回值,并在该情况下报告错误。