|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 帮忙看一下这个简单程序
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
815
人关注过本帖,
1
人收藏
标题:
帮忙看一下这个简单程序
只看楼主
加入收藏
wubihai7
等 级:
论坛游民
帖 子:31
专家分:13
注 册:2010-3-4
第
11
楼
收藏
得分:0
以下是引用
xinjinlong
在2010-12-20 17:15:44的发言:
请问你是怎么输入的?
输入时应该这样:1233,2222
你scanf中间有,
不行,中间,也会被当做字符输入!
2010-12-20 17:40
举报帖子
使用道具
赠送鲜花
zhaoya881010
来 自:芒砀古郡
等 级:
蜘蛛侠
威 望:
1
帖 子:339
专家分:1177
注 册:2010-11-21
第
12
楼
收藏
得分:0
回复 9楼 wubihai7
我不是给你一个程序了吗,出现乱码是因为你声明字符数组的时候没有初始化里面的都是随机值,用static 可以自动初始化变量为‘\0’
Go Go Go
2010-12-20 17:43
举报帖子
使用道具
赠送鲜花
A13433758072
来 自:广东潮州
等 级:
小飞侠
威 望:
1
帖 子:1182
专家分:2784
注 册:2010-7-22
第
13
楼
收藏
得分:3
个人认为,数组名是常量,他输入应只是把第一个字符赋值给数组,至于乱码可能是数组未初始化*^o^*仅供参考
[
本帖最后由 A13433758072 于 2010-12-20 18:22 编辑
]
一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入, QQ群38490319
2010-12-20 18:06
举报帖子
使用道具
赠送鲜花
xiaomarn
等 级:
小飞侠
威 望:
5
帖 子:348
专家分:2026
注 册:2009-3-18
第
14
楼
收藏
得分:3
程序代码:
#include
<stdio.h>
main() { printf(
"
%c%c\n
"
,
0xcc
,
0xcc
); } 出现汉字的原因
将两个字符解析成一个宽字符了(还是UNICODE?)
出现
图片附件: 游客没有浏览图片的权限,请
登录
或
注册
的结果是由于,str位于高地址,str1位于低地址
而str1里面全是0xcc,没有结束符'\0',所以先打印了str,然后打印str1时,将两个字节内容打印成一个汉字(于是有十个汉字),但没有结束符,继续打印后面的str(高地址,注意会有地址对齐,但刚好str1长20,被4整除,所以str位于20位置,紧接str1之后),直到遇到str里面的'\0',结束(这个问题119应该理解深刻吧,hehe)
[
本帖最后由 xiaomarn 于 2010-12-20 18:58 编辑
]
2010-12-20 18:31
举报帖子
使用道具
赠送鲜花
wubihai7
等 级:
论坛游民
帖 子:31
专家分:13
注 册:2010-3-4
第
15
楼
收藏
得分:0
以下是引用
zhaoya881010
在2010-12-20 17:43:38的发言:
我不是给你一个程序了吗,出现乱码是因为你声明字符数组的时候没有初始化里面的都是随机值,用static 可以自动初始化变量为‘\0’
为什么末尾多了一个,
图片附件: 游客没有浏览图片的权限,请
登录
或
注册
2010-12-20 18:41
举报帖子
使用道具
赠送鲜花
xiaomarn
等 级:
小飞侠
威 望:
5
帖 子:348
专家分:2026
注 册:2009-3-18
第
16
楼
收藏
得分:0
回复 3楼 zhaoya881010
你的程序是错的,输出的是str,str1全是0,根本就没输出,所以多出一个‘,’,四楼的laoyang103是对的
2010-12-20 18:43
举报帖子
使用道具
赠送鲜花
wubihai7
等 级:
论坛游民
帖 子:31
专家分:13
注 册:2010-3-4
第
17
楼
收藏
得分:0
以下是引用
xiaomarn
在2010-12-20 18:31:28的发言:
#include
main()
{
printf("%c%c\n",0xcc,0xcc);
}
出现汉字的原因
将两个字符解析成一个宽字符了(还是UNICODE?)
出现的结果是由于,str位于高地址,str1位于低地址
而str1里面全是0xcc,没有结束符'\0',所以先打印了str,然后打印str1时,将两个字节内容打印成一个汉字(于是有十个汉字),但没有结束符,继续打印后面的str(高地址,注意会有地址对齐,但刚好str1长20,被4整除,所以str位于20位置,紧接str1之后),直到遇到str里面的'\0',结束(这个问题119应该理解深刻吧,hehe)
对该答案非常满意,谢谢了哈!
2010-12-21 12:38
举报帖子
使用道具
赠送鲜花
xinjinlong
来 自:河南南阳
等 级:
论坛游侠
帖 子:61
专家分:117
注 册:2010-1-19
第
18
楼
收藏
得分:0
首先,十分抱歉没有明白楼主的意思,我还以为出错实在scanf函数这里
其次,你说的问题现在应该明白了,但是我只说一点,不同编译器是不一样的,理论上是直到碰到'\0',就停止输入,但是有的编译器较为智能,默认情况会在每个字节最后以为填写一个'\0'
你有兴趣可以是以下这个:
str[3]-->strlen(str)=7
str[6]-->strlen(str)=16
仅作参考,不同编译器是不一样的,有兴趣多交流!
2010-12-22 09:44
举报帖子
使用道具
赠送鲜花
18
2/2页
1
2
快速回复:
帮忙看一下这个简单程序
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.034790 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved