在C语言中输入汉字需要使用支持Unicode编码的函数,具体方法如下:
一、使用`scanf`函数(不推荐)
使用`%s`格式说明符
可以通过`scanf("%s", str)`读取汉字,但需注意:
- 输入时需以空格分隔(如输入"你好"需输入`你 好`)
- 该方法仅适用于单字输入,无法处理多字汉字
示例代码
```c
include
int main() {
char str;
printf("请输入一个汉字: ");
scanf("%s", str);
printf("你输入的汉字是: %sn", str);
return 0;
}
```
二、使用宽字符函数(推荐)
`wscanf`函数
使用`%ls`格式说明符读取宽字符(如汉字),示例代码:
```c
include
int main() {
wchar_t ch;
printf(L"请输入一个汉字: ");
wscanf(L"%ls", ch);
printf(L"你输入的汉字是: %lsn", ch);
return 0;
}
```
- 需确保源文件保存为UTF-8编码
- 输出时使用`wprintf(L"%ls")`
其他宽字符函数
- `getwc()`:逐个读取宽字符
- `fgetwc()`:从文件流中读取宽字符
- `ReadConsoleW()`:Windows API函数,支持Unicode字符读取
三、注意事项
编码要求
- 源文件需保存为UTF-8编码
- 编译器需支持Unicode(如使用`-fwide-exec`选项)
替代方案
- 使用`fgets`读取整行输入,再通过`wcscpy`复制为宽字符数组:
```c
include int main() { wchar_t ch; printf(L"请输入一个汉字: "); fgets(ch, sizeof(ch), stdin); // 去除换行符 size_t len = wcslen(ch); if (len > 0) ch[len - 1] = L'0'; printf(L"你输入的汉字是: %lsn", ch); return 0; } ``` 四、Python输入汉字 若使用Python,直接使用`input()`函数即可正确处理汉字: ```python hanzi = input("请输入一个汉字: ") print(f"你输入的汉字是: {hanzi}") ``` 建议优先使用`wscanf`或`fgets`方法,既能简化代码,又能正确处理多字汉字输入。