使用十六进制字符作为c程序的输入会更改字符吗?

问题描述 投票:0回答:1

我有一个名为“ hex”的简短c程序,该程序需要两个字符并输出其相应的十六进制代码:

int main(void) {
    unsigned char var[3];
    printf("%x ", var[0]);
    printf("%x ", var[1]);
    printf("Enter two hex characters: ");
    scanf("%2s", var);
}

现在,当我使用十六进制代码中由两个字符“ A”和“ 0”组成的输入来调用该程序时:

echo -e "\x41\x00" ./hex

然后输出是(如预期的那样)“ 41 0”。但是当我用十六进制代码“ 0d”两次调用该程序时:

echo -e "\x0d\x0d" ./hex

然后输出为“ 0 bb”?为什么会这样呢?如何为十六进制代码“ 0d”使用正确的输入而不是我正在使用的输入?

c linux ubuntu hex
1个回答
0
投票

打印必须在阅读后。

#include <stdio.h>

int main(void) {
    unsigned char var[3];
    scanf("%2s", var);
    printf("%x ", var[0]);
    printf("%x ", var[1]);
    printf("Enter two hex characters: ");
}
© www.soinside.com 2019 - 2024. All rights reserved.