在C变量

时间:2017-11-11 21:49:05

标签: c

我的主要语言是葡萄牙语,所以我们有一些重音词(áéíóú...等等字符)我正在尝试阅读并将这些字符存储到变量中,但它只是不起作用。如果我只是在它的代码上设置它,但如果我要求用户输入它不。示例代码:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int main(int argc, char *argv[]) {
    setlocale(LC_ALL, "Portuguese");

    char test, test2; //The same still happens using unsigned char

    test = 'í';

    printf("Character: %c\n", test);

    scanf(" %c", &test2); //The same still happens using fgets in case of a string

    printf("Character: %c\n", test2);

    system("pause");

    return 0;
}

编译并执行代码时显示:

字符:í

(等待输入,例如:)í

字符:¡

如果输入'á'则打印''(空格),''打印','打印'¢'和ú打印'£'。

我是编程和stackoverflow的新手,所以对于我所犯的任何错误感到抱歉,感谢所有的帮助,谢谢。

哦,如果这有任何不同,我也在使用Dev-c ++进行编译。

1 个答案:

答案 0 :(得分:1)

您需要认识到char中的C是大小为1 byte的数字类型。它实际上并不完全是为了保持单个语言字符项的表示。 (有时称为代码点)。

您有两种方法可以解决这种情况:

  1. 使用单字节的字符编码。 (例如,正确的 iso-8859系列的版本,在您的情况下为iso-8859-1。这个 将确保所有字符都适合单个字节。

  2. 使用适当的多字节机制处理您的输入 字符。您可能会查找char16_tchar32_t类型 也许转向使用wchar_t和相关的库例程