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

为当前最终发行版之前的所有版本提供支持
回复
头像
imjie
帖子: 249
注册时间: 2007-05-29 21:21
来自: Kaiping China
送出感谢: 0
接收感谢: 0

[问题]这是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
送出感谢: 0
接收感谢: 0

#2

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

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

#3

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

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

#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
送出感谢: 0
接收感谢: 0

#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
送出感谢: 0
接收感谢: 1 次

#6

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

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

#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
来自: 火星
送出感谢: 1 次
接收感谢: 0

#8

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

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

回到 “老旧版本支持”