关于单个中文字符的输出
怎么写才能输出第三行第二个汉字{:10_266:}#include<stdio.h>
int main()
{
char* a[] = {
"I love FishC.com!",
"Everything is possible!",
"一切皆有可能!",
"关于指针数组的应用问题",
"二维数组也可以被指针数组代替"
};
char b[] = {
"I love FishC.com!",
"Everything is possible!",
"一切皆有可能!",
"关于指针数组的应用问题",
"二维数组也可以被指针数组代替"
};
int i, j;
printf("a首字母 = %c,b首字母 = %c\n",a,b);
printf("a首行 = %s,b首行 = %s\n",a,b);
printf("a第二行第三个字母 = %c,b第二行第三个字母 = %c\n",a,b);
printf("a第三行第二个汉字 = %c%c,b第三行第二个汉字 = %c%c\n",a,b);
printf("a第三行 = %s,b第三行 = %s\n",a,b);
printf("a第二行 = %s,b第二行 = %s\n",a,b);
for (i = 0; i < 5; i++)
{
printf("a完整输出 = %s,b完整输出 = %s\n",a,b);
}
return 0;
} 没错呀。
不过中文可能不是单个字符所以输出不了 #include<stdio.h>
int main()
{
char* a[] = {
"I love FishC.com!",
"Everything is possible!",
"一切皆有可能!",
"关于指针数组的应用问题",
"二维数组也可以被指针数组代替"
};
char b[] = {
"I love FishC.com!",
"Everything is possible!",
"一切皆有可能!",
"关于指针数组的应用问题",
"二维数组也可以被指针数组代替"
};
printf("第三行第二个汉字: ");
printf("%c%c%c\n", a, a, a);
printf("第三行第二个汉字: ");
printf("%c%c%c\n", b, b, b);
return 0;
}
代码是对的啊 我用vs2017可以输出
人造人 发表于 2021-7-31 17:47
这个不行啊,输出的还是和原来一样 本帖最后由 焦糖橙子 于 2021-7-31 21:59 编辑
热心小胡 发表于 2021-7-31 17:51
代码是对的啊 我用vs2017可以输出
啊,我用的VS2019,输出的“换”和“?”
万千只cnm 发表于 2021-7-31 13:52
没错呀。
不过中文可能不是单个字符所以输出不了
我也感觉,中文确实是两个字节的,但是就没有只输出某个字的方法吗{:10_277:} 焦糖橙子 发表于 2021-7-31 21:58
我也感觉,中文确实是两个字节的,但是就没有只输出某个字的方法吗
#include <stdio.h>
#include <string.h>
int main(void) {
const char *str = "你好,世界 - hello world!";
size_t size = strlen(str);
for(size_t i = 0; i < size; ++i) {
printf("%.2x ", (unsigned char)str);
}
printf("\n");
return 0;
}
如果你那边的中文是两个字节的话
#include<stdio.h>
int main()
{
char* a[] = {
"I love FishC.com!",
"Everything is possible!",
"一切皆有可能!",
"关于指针数组的应用问题",
"二维数组也可以被指针数组代替"
};
char b[] = {
"I love FishC.com!",
"Everything is possible!",
"一切皆有可能!",
"关于指针数组的应用问题",
"二维数组也可以被指针数组代替"
};
printf("第三行第二个汉字: ");
printf("%c%c\n", a, a);
printf("第三行第二个汉字: ");
printf("%c%c\n", b, b);
return 0;
}
人造人 发表于 2021-7-31 22:17
如果你那边的中文是两个字节的话
中文占的字节数不是统一两个字节的吗?
还是说这个是由编译器规定的? 焦糖橙子 发表于 2021-8-1 09:06
中文占的字节数不是统一两个字节的吗?
还是说这个是由编译器规定的?
不是,这和文件的编码有关,在我这边是3个字节 焦糖橙子 发表于 2021-8-1 09:06
中文占的字节数不是统一两个字节的吗?
还是说这个是由编译器规定的?
$ cat main.c
#include <stdio.h>
#include <string.h>
int main(void) {
const char *str = "你好,世界 - hello world!";
size_t size = strlen(str);
for(size_t i = 0; i < size; ++i) {
printf("%.2x ", (unsigned char)str);
}
printf("\n");
return 0;
}
$ gcc -g -Wall -o main main.c
$ ./main
e4 bd a0 e5 a5 bd ef bc 8c e4 b8 96 e7 95 8c 20 2d 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 21
$
在小甲鱼的widows程序设计课程第二节里面有讲怎么单独输出一个汉字
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(void)
{
wchar_t c = L'爱';
setlocale(LC_ALL, "Chs");
wprintf(L"%lc\n", c);
return 0;
} $ file main.c
main.c: C source, UTF-8 Unicode text 人造人 发表于 2021-8-1 09:43
{:10_302:}好的 热心小胡 发表于 2021-8-1 09:45
在小甲鱼的widows程序设计课程第二节里面有讲怎么单独输出一个汉字
#include
#include
{:10_275:}你用的是C语言吗,有点看不懂了 焦糖橙子 发表于 2021-8-1 16:13
你用的是C语言吗,有点看不懂了
是的 不过要运用到windows程序设计的知识 里面就讲到了汉字的编码问题 热心小胡 发表于 2021-8-1 19:46
是的 不过要运用到windows程序设计的知识 里面就讲到了汉字的编码问题
{:10_302:}好吧。我刚入门,估计学到后面就懂了
页:
[1]