字符串指针
字符串就是一个字符数组,只不过该数组以’\0’结尾,字符串的性质和数组差不多,名字也是字符串的首地址。一些定义也是大同小异,下面介绍一些不一样的性质。
字符串定义与使用
//字符串特有定义方式
//"TOM" => 'T','O','M','\0'
char str[30] = "TOM";
使用双引号赋值字符串是一种常用的方式,会在结尾自动加上’\0’,这个是字符串结束的标志,在打印字符串时,会自动在遇到’\0’的地方停止打印。可以看到打印的内容大小与字节大小不一致,这是字符串打印特性,遇到’\0’结束打印。如果没有‘\0’,结尾,打印将会乱码。
char s[4] = {'L','U','B','I'};
char str[] = "TOM\0JOHN";
char ch[] = "\0KOKO";
//打印字符串和字符串大小
printf("str = %s sizeof(str) = %d\n",str,sizeof(str));
printf("ch = %s sizeof(ch) = %d\n",ch,sizeof(ch));
printf("s = %s sizeof(s) = %d\n",s,sizeof(s));
结果
str = TOM sizeof(str) = 9
ch = sizeof(ch) = 6
s = LUBI5 sizeof(s) = 4
字符串是一个数组,就不能以变量名来赋值,要以数组下标来赋值。这样会有点麻烦。系统库有专门的字符串赋值函数提供使用。
头文件:string.h
char *strcpy( char *to, const char *from );
功能:复制字符串from 中的字符到字符串to,包括空值结束符。返回值为指针to。
但要注意字符串to的大小要装得下from字符串,不然会运行出错。
char str[10] = "JOJO";
char ch[10];
strcpy(ch,str);
一些关于字符串的其他函数
字符串拼接
char *strcat( char *str1, const char *str2 );
功能:函数将字符串str2 连接到str1的末端,并返回指针str1.
str1与str2的数据没有被改变,使用字符指针接收该返回值
查找字符
char *strchr( const char *str, int ch );
功能:函数返回一个指向str 中ch 首次出现的位置,当没有在str 中找ch到返回NULL。
字符串比较
int strcmp( const char *str1, const char *str2 );
功能:比较字符串str1 and str2, 返回值如下:
返回值
less than 0
str1 is less than str2
equal to 0
str1 is equal to str2
greater than 0
str1 is greater than str2
字符串长度
size_t strlen( char *str );
功能:函数返回字符串str 的长度( 即空值结束符之前字符数目)
字符串追加
char *strncat( char *to, const char *from, size_t count );
功能:将字符串from 中至多count个字符连接到字符串to中,追加空值结束符。返回处理完成的字符串。
字符串常量
字符串常量与变量不同,字符串常量在文字常量区,权限为只读。字符串变量在栈区,可读可写。操作文字常量区内容会运行出错。
char *str = "TOM";
//运行出错
*str = "KOKO";