OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3611|回复: 8

关于C语言问题

[复制链接]

11

主题

19

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-3-10
在线时间
10 小时
发表于 2016-5-24 13:41:17 | 显示全部楼层 |阅读模式
5金钱
QQ截图20160524133926.png
随便写了一点东西 但是编译运行后出现的是乱码啊,这是为什么 求大神指点

最佳答案

查看完整内容[请看2#楼]

使用记事本打开源代码文本,另存,编码格式选择ANSI
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-5-24 13:41:18 | 显示全部楼层
使用记事本打开源代码文本,另存,编码格式选择ANSI
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1605
注册时间
2015-6-10
在线时间
222 小时
发表于 2016-5-24 13:47:32 | 显示全部楼层
直接打印一下看看是不是编码问题
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2016-5-3
在线时间
3 小时
发表于 2016-5-24 14:01:59 | 显示全部楼层
char是8位1个字节的,中文应该是2个字节个字吧
回复

使用道具 举报

4

主题

290

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1130
金钱
1130
注册时间
2015-8-4
在线时间
107 小时
发表于 2016-5-24 17:14:35 | 显示全部楼层
在C-FREE下编译正常,显示正常。
QQ截图20160524171350.png
活到老,学到老。
回复

使用道具 举报

1

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2015-11-26
在线时间
25 小时
发表于 2016-5-24 17:49:17 | 显示全部楼层
。。。。。。这个问题   自己想把
回复

使用道具 举报

29

主题

91

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2015-4-24
在线时间
37 小时
发表于 2016-5-24 19:46:43 | 显示全部楼层
64位机器,C编译器件下,汉字占两个字节,而你定义的数组char型,每个元素只有一个字节,那么你在赋值的时候,就会出现问题,例子如下:
[mw_shl_code=c,true]        char b[]= "三支火把";
        char *a = "你好你好";
        b[0] = *a;
        printf("%s\n",b);[/mw_shl_code]
以上是将指针a所指向的字符串的首地址的内容赋值给b[0];
那么输出结果如下:file:///C:\Users\szhb\AppData\Roaming\Tencent\Users\347579650\QQ\WinTemp\RichOle\)MW){X1CR0RPW@L26B]SBNA.png


[mw_shl_code=c,true]        char b[]= "三支火把";
        char *a = "你好你好";
        b[1] = *a;
        printf("%s\n",b);[/mw_shl_code]
同样将指针a所指向的字符串的首地址的内容赋值给b[1];结果如下:


可以看出,改变的只有第一个字“三”,由此可以说明,一个汉字占两个字节,

同理,将将指针a所指向的字符串的首地址的内容赋值给b[2];结果将是第二个汉字“支”发生变化,已经测试,在此不再截图。。


******************************************************
综上所述,楼主这样一种直接将汉字以char型变量的方式进行赋值是不正确的。





[img]file:///C:\Users\szhb\AppData\Roaming\Tencent\Users\347579650\QQ\WinTemp\RichOle\R[5[@JMOVC}~~H$0L%3IQIE.png[/img]

R[5[@JMOVC}~~H$0L%3IQIE.png
一起学,一起进步,未来总有你我的一片天空……
回复

使用道具 举报

11

主题

19

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-3-10
在线时间
10 小时
 楼主| 发表于 2016-5-25 14:19:05 | 显示全部楼层
kingnike 发表于 2016-5-24 17:14
在C-FREE下编译正常,显示正常。

谢谢。
回复

使用道具 举报

11

主题

19

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-3-10
在线时间
10 小时
 楼主| 发表于 2016-5-25 14:31:41 | 显示全部楼层
三支火把 发表于 2016-5-24 19:46
64位机器,C编译器件下,汉字占两个字节,而你定义的数组char型,每个元素只有一个字节,那么你在赋值的时 ...

我知道每个汉字占2个字节 但是我是按照每个字节去修改的,所以其实我每个字符串都占了6个字节,如果一一修改的话应该是正确的,我测试下来是编码的问题,因为UTf-8编码汉字的字节是1~3,我换成ANSI 编码 测试就成功了。但是麻烦你打了那么多字和那么认真的回复 ,太感谢了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 15:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表