在字符串中到底什么时候要加'\0'
这个我就是搞不清楚,好像从网上找的都说法不一.
char *s1 ;
char s2[55] ;
是不是给s2赋值后要加 '\0 '的
请指教
[解决办法]
是不是给s2赋值后要加 '\0 '的
===============================
char s2[55]= "string1 "可以的。。
[解决办法]
就是你一个一个对字符串赋值后最后就应该给它加上 '\0 '
比如 char s2[55];
char ch;
int i;
for ( i=0; i <55; i++ )
s2[i] = ch;
s2[i] = '\0 ';
puts( s2 );
[解决办法]
整体输入字符串时自动加了\0不用自己添加 如gets(a),cin> > a
单个输入时需在最后加\0 如cin> > a[i]
[解决办法]
情况很多 不能一概而论的,比如char a[] = "sdfaf ";这就不用加
比如strcpy(str, "asdf ");这就要再加
具体来说比较麻烦,一般初始化是不用加 '\0 '的,自动会给你加的,后来给的就要加的一般
很难总结,看到才知道呵呵 顶下
[解决办法]
forever
[解决办法]
类似于这种:
char *p= "hello ";
char a[]= "hello "
都自动加上了\0,并且a[]是占了6个字节,也就是说一直到a[5]都有值,最后一位是\0
类似于这种:
char a[5]={ 'h ', 'e ', 'l ', 'l ', 'o '}
这就没有\0,但数组里也是hello,可是在调用一些函数的时候,例如strlen(a)就会出问题,因为a没有用\0作结尾,strlen找不到结束点,可能就一直往下找下去,最后弄出一堆垃圾
[解决办法]
字符串赋值的话在末尾会自动加上‘\0’的
[解决办法]
如果初始时是不要你加的,自动加的
只是要注意下标