1.字符串的表示形式
在C语言中没有string类型,常见的表示形式(1)常量字符串
“Hello” “GoodMorning” 存储在只读常量区,字符串的内容不可以修改
(2)使用字符指针去处理
char* pStr = “Hello”;
让pStr指针指向字符串“Hello”的首地址,也就是第一个字符的地址
(3)字符数组
char buf[6] = {'H','e','l','l','o'};
char buf[6] = "Hello";
注意:字符串使用'\0'结束,使用printf(“%s”);输出字符串时,根据给定的地址一个字符一个字符的打印,直到遇到'\0'
2.字符串形式的比较
(1)常量字符串“hello” “good”
存储在只读常量区,不可以修改
(2)字符数组
char str[10] = "hello";//也就是字符数组中存放的字符串内容实际上存在栈区,数值可以修改
数组名是个常量不可以修改
(3)字符指针
char* pStr = str;
char* pStr = "hello";
字符指针可以指向字符数组的首地址,也可以指向字符串的首地址,自赋指针中保存的首地址
3.字符串的读取
(1)scanf函数scanf(“格式字符串”,地址列表);
如:
char str[20];
scanf("%s",str);或者scanf(“%s”,&str);
注意: 遇到空白字符停止读取
(2)gets函数
char *gets(char *s)
函数的功能从标准输入(stdin)中读取一行数据到s所指向的缓冲区中
如:
char str[20];
gets(str);
注意:读取一行字符串时,也能够读取空白字符, 不能对数组的越界进行处理
(3)fgets函数
char *fgets(char *s,int size,FILE *stream);
函数的功能:
第三个参数给stdin,表示从标准输入中读取size个长度的字符串,然后存储在s所指向的缓冲区中
注意:
fgets函数会在字符串的后面增加\n
4..字符串的相关函数
(1)strcpy函数 ——>重中之重#include<string.h>
char *strcpy(char *dest,const char *src);
功能: 表示将src指向的字符串内容拷贝到dest指向的缓冲区中,拷贝的过程中包含\0,返回值是目标缓冲区的地址
(2)strcat函数
char *strcat(char *dest, const char *src);
功能:
表示将src指向的字符的内容追加到dest指向的字符串后面,追加的过程中将dest中的\0覆盖掉,返回值是目标字符串的地址
(3)strncpy 和 strncat函数
char *strncpy(char *dest, const char *src, size_t n);
char *strncat(char *dest, const char *src, size_t n);
功能:
表示从str字符串中 拷贝/连接n个字节的数据到 dest指向的字符串中
(4)strlen函数
size_t strlen(const char *s)///size_t 相当于int
功能:表示计算s指向的字符串的长度,不包含\0,返回值为字符串中字符的个数
与 sizeof 关键字区分开,sizeof 计算字符串长度时 包含\0
(5)strcmp 函数
int strcmp(const char *s1, const char *s2);
功能:
表示比较s1和s2中字符串的大小,
如果s1比s2小,那么返回值 < 0;
如果s1和s2相等 ,那么返回值为0;//!strcmp(s1,s2);
如果s1 大于 s2,那么返回值 > 0;
(6)strncmp 函数
int strncmp(const char *s1, const char *s2, size_t n);
功能:
比较s1 和 s2中前n个字符的大小,同上
(7)将字符串中大写字母转换成小写strlwr()函数
(1)调用方式:strlwr(字符串)
(2)函数功能:将字符串中的大写字母转换成小写,其它字符(包括小写字母和非字母字符)不转换。
(8)将字符串中小写字母转换成大写strupr()函数
(1)调用方式:strupr(字符串)
(2)函数功能:将字符串中小写字母转换成大写,其它字符(包括大写字母和非字母字符)不转换
2.const 与指针
(1)const int* p;表示*p的值不可以改变,p 的值可以改变
(2)int const *p
效果同上
(3)int* const p;
表示p 的值不可以改变,也就是不可以改变指针的指向,*p可以改变
(4)const int* const p;
表示p的值不可以改变,*p的值也不可以改变