今天学习字符串
1、char s[5]={'A','S'},数组里面是单个的字符,由‘ ’
char s[5]={"aasd"},数组里面是字符串,由“ ”
char s[5]={"a"}也是一个字符串。
其中的5代表字符串的长度
每个字符串在结束位置都有\0,\0占一个元素。
{\0}表示空的字符串。
在输出时,%c代表字符输出,%s代表字符串输出。
2、字符的长度一定要比总长度少一位,因为隐藏一个\0,系统自己默认规定会补一个\0,无论数据里面是否写出了\0这一元素,未满情况下补\0。
一个字符串数据里面只有一个字符串。
字符串或者字符不能同时出现在一个数组里面。另外需要注意
输出时,scanf(“%s”,ss),ss前面无取地址符。
3、getchar是获取字符,gets是获取字符串,与之对应的是puts,put(ss),有自动换行的功能。getche,输入啥直接完事回显,不用按回车。getch输入啥直接完事不回显,不用按回车。
4、区别几个函数的定义:
(1)memcmp与strcmp
例如:s1[10]={“abcdef”};
s2[10]={"abcdde"} ;
memcmp(s1,s2,4)的意思是比较字符串,4代表的是比较的长度,只比较到第四位。
比较时:在规定的长度内,只比较到第一出现不一致的字符,用字符对应的ASCII值来进行对比,如果s1>s2,那么memcmp=1,如果s1=s2,那么memcmp=0,如果s1<s2,那么memcmp=-1
strcmp(s1,s2)无长度限制,比较2个字符串内所有的字符,不比长度。
例如:s1:“abc”
s2:“abcd”
虽然字符串长度不一样,但是在第四位时,s1是默认的\0,而s2是d,那么是s2大。
对应的值也同上,s1>s2值为1,s1=s2值为0,s1<s2值为-1
(2)memcpy与strcpy
memcpy(s1,s2,4)是把s2的前四项给s1,也就是说覆盖前4项(把后面的覆盖前面的)。
strcpy(s1,s2)是s2全部给s1,也就是说全部覆盖。
(3)strcat与strlen
strcat(s1,s2)把s2的内容接到s1的后面,也就是接到\0后面,然后把\0替代。
a
例如abcdef\0bcdde
strlen(s1)是看当前字符串有多长,相当于sizeof一个意思。