| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 886 人关注过本帖
标题:字符数组问题
只看楼主 加入收藏
lrui829
Rank: 2
等 级:论坛游民
帖 子:16
专家分:17
注 册:2016-3-31
结帖率:25%
收藏
 问题点数:0 回复次数:2 
字符数组问题
在这个程序中,会将输入的四个字符中间插入空格输出,有个问题,为什么必须要有红色那句,否则就好输出乱码?求指点
#include<stdio.h>
int main()
{void insert(char num[8]);
 char num[8];
 gets(num);
 insert(num);
return 0;
}
void insert(char num[8])
{int i;
 for(i=7;i>=0;i--)
     if(i%2!=0)num[i]=' ';
     else num[i]=num[i/2];
num[7]='\0';
 puts(num);
}
搜索更多相关主题的帖子: return insert 
2017-04-25 18:11
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
c下的字符串标准是以\0 为结束标志 也就是说 遇到\0 则不再往下读  否则就会一直读 这就是乱码的由来

DO IT YOURSELF !
2017-04-25 18:13
kelehaier
Rank: 2
等 级:论坛游民
帖 子:12
专家分:39
注 册:2011-11-13
收藏
得分:0 
函数insert中,它的形参char num[8]看上去是个数组,其实编译器会将其转换成指针,也就是说,num是个指针。既然是num是指针,那么puts(num)就会从num指向的第一个字符开始,一个一个的输出。
假如没有这个\0,那么会输出到天荒地老,也就是你说的好多乱码。
有了这个\0,输出到\0时就会嘎然停止。
所以指针这个东东啊,你用得好,非常神奇;用的不好,哭天天不应啊!
最近我写了一个关于指针的专题,有兴趣的,可以看看我的微博:http://

学习C语言,请关注微博与微信:C语言编程技术分享
2017-04-29 10:42
快速回复:字符数组问题
数据加载中...
 
   



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

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