| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 549 人关注过本帖
标题:[求助]为什么把char数组放在不同的地方结果不同?
只看楼主 加入收藏
走火
Rank: 1
等 级:新手上路
帖 子:426
专家分:0
注 册:2005-12-28
收藏
 问题点数:0 回复次数:4 
[求助]为什么把char数组放在不同的地方结果不同?

#include "stdio.h"
#include "stdlib.h"

void shizhi(char x[4])
{int i=0;
for(;i<4;i++)
x[i]=random(10)+48;
}

void main()
{char daan[4],huikui[4];

/*daan是出题者设定的,huiui是用户返回的数据.*/

clrscr();
shizhi(daan);
printf("%s",daan);
getch();
}

上面的红色语句,放在main中输出有不识别的字符,
放在include下面,就是定义成全局变量时不存在这种情况.
为什么?

搜索更多相关主题的帖子: char 结果 
2006-09-05 07:21
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
WIN TC吧
以前遇到过!
没给初始化 所以导致 没'\0'
而全局变量它就自动初始化
(我是这么认为的)
证明:
char n[4];
main()
{
printf("%s",n);
getch();
}
什么也没显示 直接'\0'

main()
{
char n[4];
printf("%s",n);
getch();
}
显示
一群乱码
2006-09-05 09:07
走火
Rank: 1
等 级:新手上路
帖 子:426
专家分:0
注 册:2005-12-28
收藏
得分:0 
明白了,全局变量和用static定义的是初始化了的.
里面是空'\0';
那我上面定义了4个数组char x[4];
当我把4个数组里都写了非空值时,
为什么用%s有时会出现乱码,有时不会呢?


亮哥,给我讲讲哈


搞不明白这个问题,害我每次定义char数组时,都要多定义一个用来存放'\0'
这样绝对不会出现乱码.


我想明白当把数组都填充完非0时,
那些情况会出乱码,哪些不会.


大家给我讲讲哈

我是一只小菜鸟,请大家多多照顾! QQ 87135637
2006-09-05 09:15
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
以下是引用走火在2006-9-5 9:15:56的发言:

那我上面定义了4个数组char x[4];
当我把4个数组里都写了非空值时,
为什么用%s有时会出现乱码,有时不会呢?


没看明白你指什么
你是说改之前出现的错误 还是改之后>?
还有要纠正的是 应该是 长度为4的数组x
不是4个数组

搞不明白这个问题,害我每次定义char数组时,都要多定义一个用来存放'\0'
这样绝对不会出现乱码.

那样也挺好啊
样个好习惯


2006-09-05 09:22
走火
Rank: 1
等 级:新手上路
帖 子:426
专家分:0
注 册:2005-12-28
收藏
得分:0 
感觉C越学越复杂,还多规定我都不知道
郁闷中
有时定义了一个长度为4的char 数组,给它负了>4的值,一样用%S可以显示!!

我是一只小菜鸟,请大家多多照顾! QQ 87135637
2006-09-05 10:17
快速回复:[求助]为什么把char数组放在不同的地方结果不同?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018588 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved