| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1428 人关注过本帖
标题:在学习字符数组中,碰到'\0',求解释的清楚点(看下面程序)
只看楼主 加入收藏
s人圭日月
Rank: 2
等 级:论坛游民
帖 子:36
专家分:27
注 册:2016-6-22
结帖率:50%
收藏
已结贴  问题点数:30 回复次数:5 
在学习字符数组中,碰到'\0',求解释的清楚点(看下面程序)
# include <stdio.h>
# include <string.h>

int link(char str1[40],char str2[40],char str3[80])
{
    int i,n=0,k;
    for (i=0;i<strlen(str1);i++)
    {
        str3[i]=str1[i];
        n++;
    }
    k=i;
    for (i=0;i<strlen(str2);i++)
    {
        str3[k+i]=str2[i];
        n++;
    }
    str3[i]='\0';//这段代码我知道是可有可无,但是有了的话好处是什么。谢谢
    return n;
}
void main(void)
{
    char str1[40],str2[40],str3[80];
    int n;
    printf("请输入字符串1\n");
    gets(str1);
    printf("请输入字符串2\n");
    gets(str2);
    n=link(str1,str2,str3);
    printf("字符个数为%d\n",n);

}
搜索更多相关主题的帖子: include return 字符串 include return 字符串 
2016-08-04 20:20
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:5 
是 str3 = str1 + str2 的话,
str3[i]='\0'; 就改为 str3[k+i]='\0';
这句代码是不可无,'\0'是str3的结束标志。
2016-08-04 21:31
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:20 
你的这个代码里面,那是真的可有可无。(你用str[i]='\0'也是不对的,应该改成str[k+i]='\0')
如果是输出str[3]那就看情况了。
‘\0’作为判断字符串结束的标记,以字符串输出时如果编译器找不到结束的标记,就会产生乱码。
如果知道字符串有几个字符组成,以单个字符输出到是可以不用加‘\0’。
就像你写的代码,因为知道有n个,所以只要输出n个字符,此时加不加‘\0’对输出没有影响。
2016-08-04 23:56
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <stdio.h>

int link( const char* str1, const char* str2, char str3[] )
{
    char* p = str3;
    for( ; *str1; *p++=*str1++ );
    for( ; *p++=*str2++; );
    return p-str3-1;
}
2016-08-05 08:23
cppyjou
Rank: 2
等 级:论坛游民
威 望:1
帖 子:10
专家分:16
注 册:2016-8-4
收藏
得分:5 
'\0'是字符串结束的标志,你输入的字符不够多,所以感觉可有可无,你str1[]里面有40个字符str1[0]-str1[39],那么你要在字符串最后有一个位置给'\0'作为字符串结束的标志,如果输入39个字符,那么str[39]这个位置就会用来存放'\0',如果40个都是字符甚至更多,会有越界的报错。
2016-08-05 11:12
s人圭日月
Rank: 2
等 级:论坛游民
帖 子:36
专家分:27
注 册:2016-6-22
收藏
得分:0 
回复 3楼 linlulu001
谢谢!
2016-08-07 17:17
快速回复:在学习字符数组中,碰到'\0',求解释的清楚点(看下面程序)
数据加载中...
 
   



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

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