标题:字符数组问题
只看楼主
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: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-476427-1-1.html




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

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