如何在C中使用字符串正确处理特殊的葡萄牙语字符,如ç,é,è等。

我发现了如何使用printf而不是scanf,fgets等等...我现在不知道如何正确地将这种字符存储在字符串中...

#include <locale.h>

int main (void){
  setlocale(LC_ALL,"Portuguese");

  printf("This is a example! Portuguese caracters ç é");

}


编辑:

如下所示尝试了以下代码:

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


int main() {
    int a = 0;
    setlocale(LC_ALL,"Portuguese");

    wprintf(L"Exemplo de ç\n");

    return 0;
}


从控制台手动进行编译:gcc -o main.exe main.c可以运行。
但是使用devc ++给我一个错误:

[错误]转换为执行字符集:无效的参数

如果我只输入:wprintf(L“ Exemplo de \ n”); (无ç)devc ++现在可以很好地编译。

因此,一旦手动进行编译,我想这与devc ++编译选项有关……有人知道吗?

编辑2:

我所有这些的主要目标是要求用户提供输入。读取该输入以保存到文件。每次程序启动时,我都会读取文件以恢复保存在文件中的值。

但是用户可以使用葡萄牙语输入ç,é,è...

最佳答案

使用宽字符串作为本地字符。以下对我有用:

#include <wchar.h>
#include <locale.h>
int main (void)
{
   setlocale(LC_ALL,"pl_PL.UTF-8");
   wprintf(L"This is a example! Polish characters ąśćłźó\n");
}

09-04 14:14
查看更多