c - 为什么使用 \"%s\" 时 sprintf 不起作用?
问题描述
我将 sprintf 与 IMXRT1021 NXP 微控制器一起使用,但没有获得所需的输出。
库:Redlib (nohost-nf)
我已经尝试了两种方法,但结果是一样的。
sprintf(at,"AT=\x22%s\x22,\x22%s\x22\r\n","abcdef","123456");
sprintf(at,"AT=\"%s\",\"%s\"\r\n","abcdef","123456");
预期输出:
AT="abcdef","123456"\r\n
实际输出:
AT=\"abcdef\",\"123456\"\r\n
解决方案
这取决于你在说什么。
如果您要将其输出到终端,您将看到的字符串就是您所期望的:
AT="abcdef","123456" # plus newline etc.
但是,该字符串的 C表示形式是:
"AT=\"abcdef\",\"123456\"\r\n"
推荐阅读
- android - 如何基于abi生成多个aar?
- sql - SQL比较2列,然后动态更改一列中的值
- angularjs - 离子 v1 构建问题
- ruby-on-rails - Redirect the editing of nested content
- angular - 在 Angular AuthGuard 中使用 @ngrx/store 元素
- batch-file - 循环文本文件以使用批处理脚本查找和替换一行
- git - Git / Gitlab Flow 工作流程
- docker - Docker 编写从容器到 localhost 的映射端口
- python - 使用鼻子对类进行单元测试
- c# - 处理有限数量的请求,同时缓冲其余请求