重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、str和strl是变量,意思就是象 int a;中的“a” 的作用,本身既不是函数也不是关键字,没有特别意义。而strlen是测试字符串长度的函数。
目前成都创新互联已为千余家的企业提供了网站建设、域名、网络空间、网站托管、企业网站设计、新干网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
2、变量strLen,strText分别表示一个字符串的长度和字符串。Len()是取字符串长度的函数,将strText字符串的长度得到后赋值给变量strLen。
3、strlen是求字符串的长度,但不包括字符串的null结束符。strlen为C语言库函数,包含于string.h中,作用为计算一个字符串(字符数组)中元素的个数,即从数组头部计数,直到遇到字符串结束符\0为止,计数结果不包括\0。
果断切换成c++版本的cout发现可以正常输出。于是上网找答案,居然惊讶的发现printf输出字符串是针对char *的,换言之,printf只能输出c语言中的内置数据,string不是c语言内置数据。
你的最后一行 printf(%c\n,X);应该是只有0~100时才可以输出对应的字符X。但是你把它放在if语句的后面,那么不论你输入什么数值,都要输出X,但是当输入数值小于0或者大于100时,X是没有被赋值的。
还有个问题是:mystrcat最后return s;但是这个s已经不是指定字符串的开始了。换句话说,你成功的连接了字符串,但是你返回的是这字符串之后的地址空间。
c_str()返回的指针保证指向一个size() + 1长的空间,而且最后一个字符肯定 \0 而data返回的指针则保证指向一个size()长度的空间,有没有null-terminate不保证,可能有,可能没有,看库的实现了。嗯。。
而c_str(),是std:string的一个方法,作用是std:string转换为 const char*。所以pStringRule-m_sString.c_str()作用是将CCString转换为 const char*,但是cocos2d0以后,m_sString方法已经被移除了。
C语言字符串以\0结尾,如果不以该符号结尾则输出%s时会出错,程序一直往存放字符串的地址访问。而你的程序中并没有赋\0给那两个数组,所以会出现乱码。
这是C语言习惯,务必养成!\x0d\x0a\0是字符串结束符,每当解释器看到这\0才会认为字符串终止,而你的程序明显没有字符串结束符,所以连同垃圾内存一起读出来了。“烫烫。”等就是垃圾内存。