【发布时间】:2018-09-18 18:06:47
【问题描述】:
如何正确处理特殊的葡萄牙语字符,例如:ç、é、è 等等...在 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++ 编译选项有关的东西......有人知道吗?
EDIT2:
我所有这些的主要目标是询问用户输入。读取该输入以保存到文件。每次程序启动时,我都会读取文件以恢复保存在文件中的值。
但在葡萄牙语中,用户可以输入诸如ç、é、è ...
【问题讨论】:
-
正如你所说的`printf 等工作。他们在 C 中使用所谓的“字符串”,所以不清楚你的问题是什么。阅读How to Ask 并遵循建议。
-
您使用 wide 输入和输出,以及宽字符串。而不是强制某些语言环境,而是告诉 C 库使用用户当前的语言环境。例如,请参阅我为this answer 编写的示例程序。
-
你可以使用宽字符,但使用普通字符和 UTF-8 更容易,至少对葡萄牙语来说是这样。