c中char型数组结束符赋值问题

[复制链接]
查看11 | 回复3 | 2009-11-5 15:49:40 | 显示全部楼层 |阅读模式
1. 如果使用puts(src)或printf("%s",src),那么就一定要src[2]=0或src[2]='\0'也可以不使用,如果想输出,需要用给出字符个数,然后用循环输出putchar(src)..\0 是转义字符,0 是十进制数,完全一样,只是表示的形式不一样。。
回复

使用道具 举报

千问 | 2009-11-5 15:49:40 | 显示全部楼层
不一样,0赋值到str[2]中存的是ASCII码,大小是48,'\0'的ASCII码是0
回复

使用道具 举报

千问 | 2009-11-5 15:49:40 | 显示全部楼层
nono···应该要赋值的,有的编译器有默认赋值 是,因为0='\0'
回复

使用道具 举报

千问 | 2009-11-5 15:49:40 | 显示全部楼层
使用字符串变量前,最好能手动初始化一下memset(src, '' ,sizeof(src));你src[2] = '\0' 与 src[2] = 0的结果是一样的,而src[2] = '0' 则与 src[2] = 48的结果是一样的.在ASCII码中数值0就是控制符\0,表示字符串结束的意思如果你要将src作为一个字符串使用,则必须赋一个结束符,因为我们的绝大部分的函数使用的时候判断长度都是与strlen相同的,一直会找到\0才认为这个字符串结束.没有赋结束符会导致这个字符串的长度超过预期的长度.不赋结束符也是一样的话,有可能是编译器默认进行了一次初始化,也有可能是当时那个内存的值刚好是\0;事实上我们不能总依靠编译器自身的功能,而应该自己手动去初始化或者赋结束符.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行