0

我正在 Windows 终端中测试一个 C 程序。我模拟了一个我遇到问题的部分的快速示例。示例如下:

 $ cat test.c
 #include <stdio.h>
 #include <stdlib.h>

 int main() {
         char var[6];
         scanf("%s", var);

         int i=0;
         while(var[i] != '\0') {
              printf("%x ", var[i]);
              i++;
         }
      return 0;
 }

当我使用带有“普通”字符(例如“dd”)的字符串时,输出如预期的“61 61”(十六进制 61 是字母“d”)。当我尝试输入特殊字符(例如 í(0xA1 或 U+00ED))时,我得到以下输出:

 $ ./a.exe
 í
 ffffffc3 ffffffad

http://www.utf8-chartable.de/上的 UTF-8 代码页显示向后的“i”实际上是 0xc3ad。我如何将此字符复制并粘贴为 0xA1,因为我真的想在终端中输入 0xA1,而不是 0xc3ad?我从“charmap”复制并粘贴它。我什至尝试在 ANSI 中保存带有字符的文本文件并复制和粘贴,但我仍然得到 0xc3ad。请帮助我。

编辑:在 mac 上运行同样的程序也给了我 c3ad。

4

0 回答 0