一、字符串
3、字符串特点
a) 字符串占位符是%s
b)字符串占用内存是连续的,一个字符挨着一个字符
一旦碰到‘\0’则表示字符串的结束
字符串有点像数组,内存也是连续的
例如
printf(“%s\n”,”abcd\0def”);//可以直接跟字符串
打印出abcd(因为碰到\0表示结束了)
或者
printf(“%s\n”,字符串首地址)//可以直接跟字符串的首地址
c) 多个并列的字符串最终gcc会把它合并成一个字符串
“abc””def”--->”sbcdef”
printf(“abc””def”);--->abcdef
**
二 、字符串和指针的那点事
**
定义并且初始化字符指针变量的形式:
p保存着字符串"abcd"的首地址,等于其中字符’a’的首地址
char *p = "abcd";
c) 如果让一个字符指针变量指向一个字符串,其中字符串的’\0’可以不用写
gcc编译器自动帮你添加‘\0’
**
三、字符串和数组两种写法
**
可复制代码如下:
//字符串演示
#include<stdio.h>
int main(void)
{
//1、直接打印输出字符串
printf("%s\n","abcd\0");//abcd
printf("%s\n","abcd\0efg");//abcd
printf("hello,word\n");//hello,word
printf("hello,""word\n");//gcc合并为“hello,word\n”
//2、字符指针变量和字符串的关系
char *p="abcd";//gcc帮你添加‘\0’,p保存着字符串的首> 地址
printf("sizeof(p)=%d\n",sizeof(p))//永远等于4(指针)
printf("%s\n",p);//直接给字符串的首地址即可
//*(p+2)='C';//报错
//打印出字符串的每个字符
printf("%c\n",*p++);//a
printf("%c\n",*p++);//b
printf("%c\n",*p++);//c
printf("%c\n",*p++);//d
printf("%c\n",*p++);//'\0'的ascii码
//3、字符串和数组的关系
char a[]={'a','b','c','d','\0'};
printf("%s\n",a);//a就是字符串的首地址
a[2]='C';//将第二个元素字符‘c’修改位‘C’
printf("%s\n",a);//a就是字符串的首地址
printf("sizeof(a)=%d\n",sizeof(a));//5
char b[]="hjkl";
printf("%s\n",b);//b就是字符串的首地址
b[2]='K';//将第二个元素字符‘k’修改为K
printf("%s\n",b);//b就是字符串的首地址
printf("sizeof(b)=%d\n",sizeof(b));//5
return 0;
}
**
四、字符串标准库函数
**
a)这些函数功能:便于处理字符串
b)strlen函数:获取字符串中有效字符的长度,不包含结束符’\0’;
运行结果均为3
c) strcat函数:字符串拼接
d)strcmp函数:字符串比较函数
e)strcopy函数:字符串copy函数
如果p5长度超过10或报错,则需要加一个判断函数
f)sprintf函数:格式化输出函数
g)strtoul函数:字符串转整形函数