- 方式一
char str[] = {'H', 'e', 'l', 'l', 'o', '}';// 加上'方式二 '的作用是打印有个结尾 char
- *
= "Hello"str2 ; // 这名话会隐式加了// 方式一, 所以这个不需要在后面加char[ ]
上面二种方式在使用上也是有区别
=
'H' str,'e' , {'l', 'l', 'o', '}'; // 方式二char *="Hello"
;
// 方式一可以执行修改 *** 作 如下 [str2 2 ]=
'z'
str;// 这样是没问题的// 方式二如果执行方式一会出现崩溃如下代码 [ 2] =
'z'
str2;// 不能这样做// 原因,方式一是因为生成的字符串Hello是在静态区,但是创建str的时候它是将Hello拷贝过来, *** 作的是一个副本,所以没影响 方式一 intgetLen1 (
char
// 方式二则不同,方式二是直接将str2的地址指向的静态区的Hello,而静态区的数据是不能修改的,所以系统会拒绝访问而出现异常。
获取字符串长度
- *
) int=0 ;stringwhile {
( count * )// *string !='++' 判断的是;而不是0 就是一直遍历下去 *string取string的值
// 指针挪动 ++;string} { return
string;} char
count[]
=
'a' count,
'b'
, string'c', 'd' {,'e' ,'f' ,'0' ,'}' ;int =getLen1 () ;方式二 char
[ len ] ='a'string,'b'
- ,
'c' string2,'d' , {'e', 'f', '0', '}'; int= sizeof/ sizeof( char);
char len2 * = string2 "1" ;// 将num转为int类型int=atoi
字符串转换
( )num ; char*
=
"Lucy" c_int ; char*num="lucy"
字符串比较
; // 使用系统API test1 int =strcmp
( , test2 ) ;// 它是区分大小写
// result_2如果返回0 则代表相等,
int result_2 = strcmpi(test1, test2); // 它是不区分大小写
char
* result_3 = "name-is-Lucy";test1char test2*= 'i'
字符串查找及获取位置
; chartext * =strstr
( , subtext ) ;if
( ) pop // 非null 就查找到了 printf(text"查找到了,pop的值是:%s\n" subtext,)
; // 会把找到的后面一截全部打印出来 查找到了,pop的值是:is-Lucypop} { // 获取位置
int=-; pop// pop = is-Lucy, text = name-is-Lucy 直接指针减法就可以// 字符串拼接得定义一个容器 char
[
25
] index ; pop // 定义几个字符串 textchar *
字符串拼接
=
"--到--" destination,*="C++"// 25容器大小 这个是写死的。
,
* =blank "java" ;// 使用api strcpy strcpyCPP ( ,) ;Java //先copy到数组里, strcat(
,
);destination// 然后再拼接 CPPstrcat(,
);destination// 然后再拼接 blankprintf( "拼接后的结果: %s\n"
,)destination; Javavoidlower (
char*,char destination*)
大小写转换
printf ("name: %p\n", &dest) ; charname* {
=;while( *name)*
= tolowertemp ( name*
) ;++temp; {
// 挪动指针dest ++ ;// 存储的也要挪动,目是的挪动一个储存一个}temp*=
temp';'// 避免打印系统值 printf
dest("name: %p\n",
&
)dest ; }char *
="Hello World";// 先定义结果 charname[20
]
; lowername ( ,)
;
printf dest("小写转换后的结果是: %s\n",)
;printfdest( name"name: %p\n",
&);void destsubString(
char*,char *name,int
字符串的截取
, int)char *result= + ;strint = start; for end( {
; <temp ; str ++ start)
* i = start*
( +) i ; end++ i;} {
*result = ';'}tempchari*=
result"My-name-is-Hanmeimei";
char
*result [ 30]
;
subString (string , ,2
, 6result);// 截取第二到第六个字符printf
("截取后的值为: %s\n"result, string) ;
result
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)