如何在C语言中将宽字符串转换回普通字符串?
时间: 2024-10-09 17:02:00 浏览: 16
在C语言中,将宽字符串(wide character string, wc_string)转换回普通字符串(ASCII字符串, char_string),通常需要借助于一些函数来进行逐字节的复制。下面是一个使用`mbstowcs()`和`strlen()`的例子:
```c
#include <stdio.h>
#include <wchar.h>
#include <string.h>
size_t wcstr_to_char(char* dest, wchar_t* src) {
size_t len = wcslen(src);
mbstowcs(dest, src, (size_t)-1); // 将宽字符串转换为多字节字符,-1表示不限长度
return len;
}
int main() {
wchar_t wide_str[] = L"你好,世界!";
char char_str[100];
size_t actual_len = wcstr_to_char(char_str, wide_str);
char_str[actual_len] = '\0'; // 添加终止符
printf("普通字符串: %s\n", char_str);
return 0;
}
```
在这个例子中,`wcstr_to_char()` 函数接收宽字符串 `src`,并将其转换到目标字节字符串 `dest` 中。注意,由于 `mbstowcs()` 可能不会完全填充 `dest`,所以需要计算实际长度并在结尾添加`\0`。