[问题]这是gcc的bug还是我的程序有问题?(关于中文字符的输出)(已解决)

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
imjie
帖子: 249
注册时间: 2007-05-29 21:21
来自: Kaiping China

[问题]这是gcc的bug还是我的程序有问题?(关于中文字符的输出)(已解决)

#1

帖子 imjie » 2007-10-09 12:32

代码: 全选

#include<stdio.h>
int main(){
	int i;
	char chi[]="零一二";
	for(i=0;i<=5;i++){
		printf("%c",chi[i]);
	}
	printf("\n");
	return 0;
}

输出的是
零一

代码: 全选

#include<stdio.h>
int main(){
	int i;
	char chi[]="零一二";
	for(i=0;i<=9;i++){
		printf("%c",chi[i]);
	}
	printf("\n");
	return 0;
}
输出的是
零一二
ubuntu=respect+helpfulness+sharing+community+caring+trust+unselfishness
头像
imjie
帖子: 249
注册时间: 2007-05-29 21:21
来自: Kaiping China

#2

帖子 imjie » 2007-10-09 12:46

经过高手指导,原来在gcc里中文要三个字符,前两个就可以显示一个字?
ubuntu=respect+helpfulness+sharing+community+caring+trust+unselfishness
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

#3

帖子 bones7456 » 2007-10-09 12:51

uft8的中文本来就要3个字节吧,哪能这么容易就怀疑是人家gcc的bug啊? :lol:
关注我的blog: ε==3
头像
fearmind
帖子: 212
注册时间: 2007-08-24 13:32

#4

帖子 fearmind » 2007-10-09 13:03

代码: 全选

#include<stdio.h>
int main(){
   int i;
   char chi[]="零一二";
   for(i=0;i<=5;i++){
      printf("%c",chi[i]);
   }
   printf("\n");
   return 0;
} 
在程序的后面加上一句

代码: 全选

printf("Size of chi-->%d\n",sizeof(chi));
你会看到输出为10,即占用了10个字节的空间。
也许正如楼上所说,中文字符在gcc中占3个字节,最后一个可能是字符"\0",作为字符串结束的标志。
头像
imjie
帖子: 249
注册时间: 2007-05-29 21:21
来自: Kaiping China

#5

帖子 imjie » 2007-10-09 13:32

fearmind 写了:

代码: 全选

#include<stdio.h>
int main(){
   int i;
   char chi[]="零一二";
   for(i=0;i<=5;i++){
      printf("%c",chi[i]);
   }
   printf("\n");
   return 0;
} 
在程序的后面加上一句

代码: 全选

printf("Size of chi-->%d\n",sizeof(chi));
你会看到输出为10,即占用了10个字节的空间。
也许正如楼上所说,中文字符在gcc中占3个字节,最后一个可能是字符"\0",作为字符串结束的标志。
哈哈,立刻明白了!谢谢 merci
ubuntu=respect+helpfulness+sharing+community+caring+trust+unselfishness
头像
windwiny
帖子: 2254
注册时间: 2007-03-13 17:26

#6

帖子 windwiny » 2007-10-09 14:48

UTF-8 才要3个字节存一个汉字,GBK就用2个字节
头像
imjie
帖子: 249
注册时间: 2007-05-29 21:21
来自: Kaiping China

#7

帖子 imjie » 2007-10-09 18:58

windwiny 写了:UTF-8 才要3个字节存一个汉字,GBK就用2个字节
关键在此,我之前没有注意到
ubuntu=respect+helpfulness+sharing+community+caring+trust+unselfishness
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

#8

帖子 xhy » 2007-10-10 6:49

C语言处理编码得小心熠熠的
python就轻松多了
目前负债150多万
回复