c语言反转中文字符串
时间: 2024-11-30 15:22:07 浏览: 24
在C语言中,由于中文字符通常是UTF-8或者其他变长编码,直接反转可能会导致乱码。因此,你需要先将整个字符串转换成宽字符(wchar_t)格式,然后再进行反转操作。以下是反转中文字符串的一个示例:
```c
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
void reverse_wchar(wchar_t* str, size_t length) {
if (length > 1) { // 忽略空字符串
wchar_t temp[length];
for (size_t i = 0; i < length / 2; i++) {
temp[i] = str[length - i - 1]; // 交换首尾元素
temp[length - i - 1] = str[i];
}
wcscpy(str, temp); // 将反转后的字符复制回原字符串
}
}
int main() {
setlocale(LC_ALL, ""); // 设置本地化环境以便正确处理中文
char chinese_str[100];
wprintf(L"请输入一串中文:");
gets(chinese_str); // 注意gets会读入包括换行在内的整行
size_t len = strlen(chinese_str); // 获取字符串长度
wchar_t wide_str[len]; // 宽字符缓冲区
mbstowcs(wide_str, chinese_str, len); // 转换为宽字符
reverse_wchar(wide_str, wcslen(wide_str));
wprintf(L"反转后的中文字符串:%ls\n", wide_str);
return 0;
}
```
阅读全文