c - C中的字符串格式化和解析
问题描述
我正在接收十六进制形式的字符串,输入字符串:"E5A682E682A8"
。我想在 C 编程中显示它的字符串。
即这里3个字节组成一个字符(中文)。我正在使用以下语句获取输出:
unsigned char output[] = "\xE5\xA6\x82\xE6\x82\xA8";
但我需要帮助才能从输入字符串中获取这种格式。如何解析和处理这个字符串以获得这个输出?
解决方案
最简单的方法可能是使用scanf
. 该%x
格式读取十六进制,您可以使用宽度修饰符将其一次限制为两个十六进制数字,例如%2x
. 该程序看起来像这样:
#include <stdio.h>
int main()
{
int c;
while(scanf("%2x", &c) == 1)
putchar(c);
}
请注意,检查scanf
的返回值很重要,以确保它确实找到了您期望的输入。该程序将在到达 EOF 或遇到任何非十六进制输入时停止。
顺便说一句,由于工作方式的原因scanf
,该程序还将接受十六进制对之间的空格。所以输入可能是"E5 A6 82 E6 82 A8"
,甚至可能有多行:
E5 A6 82
E6 82 A8
在这种情况下,这可能没问题。
推荐阅读
- asp.net - IIS 上托管的 ASP.NET Web API 无法正常工作 HTTP 错误 404.0 - 未找到
- angular - 如何在角度 4 的一条路线到另一条路线之间显示微调器装载机,我正在接收事件但无法显示装载机
- java - 使用额外回调处理自定义登录
- flutter - Flutter - 在容器中显示相机/条形码扫描仪
- java - 如何在文件中按名称搜索?
- spring - Spring EL(SpEL)替换属性文件中的占位符?
- java - 我如何找到扩展类的方法在哪里
- bash - (学习 Bash)如何从 bash 文件运行多个 postgresql 命令
- ionic4 - 电子邮件和确认电子邮件匹配字段要求的自定义验证
- asp.net-mvc - 等待 db.SaveChangesAsync(); 创建错误 -> 存储更新、插入或删除语句影响了意外的行数 (0)