c语言中,把汉字存入字符数组,然后用指针打印汉字,是否可行
时间: 2024-03-12 16:44:06 浏览: 18
在 C 语言中,汉字通常采用 Unicode 编码,需要用两个字节来存储一个汉字。因此,如果要把汉字存入字符数组,需要使用宽字符数组 wchar_t。在 Windows 平台上,宽字符的编码方式是 UTF-16,一个字符占用两个字节。在 Linux 平台上,宽字符的编码方式是 UTF-32,一个字符占用四个字节。
下面是一个例子,演示了如何用指针打印汉字:
```c
#include <stdio.h>
#include <wchar.h>
int main()
{
wchar_t str[] = L"你好,世界!";
wchar_t *p = str;
while (*p != L'\0')
{
wprintf(L"%lc", *p);
p++;
}
return 0;
}
```
这个程序定义了一个宽字符数组 str,存储了一个包含汉字的字符串。然后定义了一个指向宽字符的指针 p,将其指向字符串的首地址。接下来使用 while 循环遍历字符串,依次打印每个字符,直到遇到字符串的结束标志 L'\0'。注意,使用 wprintf 函数来打印宽字符,其格式化字符串为 %lc。
相关问题
C语言如何把字符串存入数组
在C语言中,可以使用字符数组来存储字符串。以下是将字符串存入字符数组的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100 // 定义数组长度
int main() {
char str[MAX_LEN]; // 声明字符数组
char *my_string = "hello world"; // 声明字符串
int len = strlen(my_string); // 获取字符串长度
// 将字符串存入字符数组中
for (int i = 0; i < len; i++) {
str[i] = my_string[i];
}
str[len] = '\0'; // 添加字符串结尾标志
printf("The string is: %s\n", str); // 输出存储在字符数组中的字符串
return 0;
}
```
在上面的代码中,我们首先声明了一个字符数组 `str`,并将其长度设为 `MAX_LEN`。接着,我们声明了一个字符串指针 `my_string`,并将其赋值为 "hello world"。然后,我们使用 `strlen` 函数获取字符串 `my_string` 的长度,将其存储在变量 `len` 中。
接下来,我们使用循环将字符串 `my_string` 中的每个字符存储到字符数组 `str` 中,并在字符数组的末尾添加一个字符串结尾标志 `'\0'`。最后,我们使用 `printf` 函数输出存储在字符数组中的字符串。
需要注意的是,C语言中的字符串必须以字符串结尾标志 `'\0'` 结尾,否则将无法将其正确地存储在字符数组中。
c语言 将字符串存入数组
C语言中可以使用字符指针将字符串存入字符数组中。具体实现方法如下:
```c
#include <stdio.h>
int main() {
char *str = "Hello, world!"; // 定义一个字符指针,指向字符串常量
char arr[20]; // 定义一个字符数组,用于存储字符串
int i = 0;
while (*(str + i) != '\0') { // 通过指针遍历字符串
*(arr + i) = *(str + i); // 将指针指向的字符存入数组中
i++;
}
*(arr + i) = '\0'; // 在数组末尾添加'\0',表示字符串结束
printf("%s\n", arr); // 输出存储在数组中的字符串
return 0;
}
```
上述代码中,我们首先定义了一个字符指针`str`,指向字符串常量"Hello, world!"。然后定义了一个字符数组`arr`,用于存储字符串。接着通过指针遍历字符串,将指针指向的字符存入数组中。最后在数组末尾添加'\0',表示字符串结束。最终输出存储在数组中的字符串。