字符串长度问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 22:31:07
我事先不知道字符串的长度,所以我给它分配了一个足够的空间
例如 char *s=new char[225];
输出的时候字符串s小于255(例如s="hello"),会输出一些其他的符号(例如hello@@@@@@@@@@@@@@@@@)
怎样去掉这些符号而保留正常的长度(hello)?

方法一:初始化s的内容:
memset(s,'\0',sizeof(s));
有一定使用限制。

方法二:添加字符串结束符:
例如拷贝hello时,其结尾即s[5]处赋值:s[5] = '\0'。
最灵活方式。

因为C语言的字符串要求以'\0'(ASCII的值是0)为结尾

而你没有在字符串最后加上'\0',结果显示时不知道字符串已经结束了,于是就会继续将可用字符串后面的一些无意义的内容也打印出来,直到碰上一个值为0内存单元。

解决方法在“hello”后面加上一个'\0'(每一次都要加)

memset(ucData,'',sizeof(ucData));

1;先用n=strlen(s)测出长度,for(i=0;i<n;i++) printf("%c",s[i]);
2:for(i=0;s[i]!='\0';i++) printf("%c",s[i]);
3:先用n=strlen(s)测出长度,for(i=n;;i++) s[i]='\0';cout<<s;

s[strlen(s)] = '\0';

我也是新手,对于new这个东西不太敢用,今天看到你用了会产生这样的效果,那还不如用char *s="*******";或char s[255]="*****";输出也不会有你说的问题,那你为什么要用new?我想知道,new一般用在什么情况?