第三周第二天2019-11-12

今天学习字符串

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

strcmp(s1,s2)无长度限制,比较2个字符串内所有的字符,不比长度。

例如:s1:“abc”

            s2:“abcd”

虽然字符串长度不一样,但是在第四位时,s1是默认的\0,而s2是d,那么是s2大。

对应的值也同上,s1>s2值为1,s1=s2值为0,s1

(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一个意思。

你可能感兴趣的:(第三周第二天2019-11-12)