我有一个C库,需要“\ xFF”形式的十六进制输入。我需要传递格式为“0xFF”形式的十六进制值数组。有没有办法在C?
中用“\ x”替换“0x”答案 0 :(得分:1)
这听起来像一个简单的字符串替换操作,但我认为这不是你真正需要的。
符号" \ xFF"在C字符串中表示"该字符串包含编码值为0xFF的字符,即255十进制"。
那么,如果这就是你的意思,那么你需要完成编译器的工作并替换传入的" 0xFF"具有代码0xFF的单个字符的文本。
这没有标准功能,因为它通常由编译器完成。
为了实现这一点,我会编写一个查找0x
的循环,每次找到它时,使用strtoul()
尝试转换该位置的数字。如果数字太长(即0xDEAD),你需要弄清楚如何处理它。
答案 1 :(得分:1)
您可以使用strstr查找子字符串"0x"
,然后将'0'
替换为'\\'
:
#include <stdio.h>
#include <string.h>
int main(void)
{
char s[] = "0x01,0x0a,0x0f";
char *p = s;
printf("%s\n", s);
while (p) {
p = strstr(p, "0x");
if (p) *p = '\\';
}
printf("%s\n", s);
return 0;
}
输出:
0x01,0x0a,0x0f
\x01,\x0a,\x0f
但正如@unwind和@Sathish指出的那样,这可能不是你所需要的。