常用字符串处理函数
头文件 string.h
函数:
size_t strlen (const char*) 获得字符串长度,不包括\0
char * strapr(char *) 转大写
char*str(wrlchar *) 转小写
char * strcpy (char * ,const char *)把第二个复制到第一中
数组的隐藏特性其地址是不能改的(常量特性)
ch2=ch3;//不是字符串的复制
strcpy–sch1,ch)∥把ch2复制给h
字符串的比较
strcmp( char1, char2)相同返回0,1<2返正数,否则返负数
字符串的连接
strcat(ch1,ch2);//将2连接到1后面
需要保证连接后的大小没有超过ch1
指向字符串的指针
char * words=“My heat is still”;
words+=9;
puts(words);
输出:is still;
数组形式和执行形式的不同
初始化字符数组把静态储存区的字符串拷贝到数组中
(在得到地址后,可以改变静态储存区的内容,非常危险)
初始化指针时只把字符串的地址拷贝给指针
例:
char str[]=" Helloword";
char *str2 =" Hello word";
printf("%p\n",“Helloword!”);
printf("%p\n",“str1”);
printf("%p\n",“str2”);
结果是1和3的相同,与2不同
同时 str1++;//错误的
str2++;//正确的
2是地址,1是常量
建议用 const char *
结构体
结构是一种构造数据类型,由若干数据项组成,
所以是一种由我们定义的数据类型
使用例
struct name//name就是类型名
{
DataType var 1;//结构成员
.......
.......
}
对于多个结构成员,其储存原理与数组是一样的,
也是一块连续的空间,
每一块是一种类型。
结构定义并不占内存,结构定义一般放在程序开头,头文件声明之后,结构定义仅用来描述结构的形式,使用结构需要声明结构变量
指向结构的指针
struct Hero
{
char name[50];
........
........
}
int main()
{
struct Hero hero1;
//定义hero1
........
........
struct Hero * ptr_hero1 = &hero1;
printf("%s\t",ptr_hero1->name);//减号加大于号
}
定义时还可以用 typedef struct hero{…}Hero;
使用时用Hero就可以了