A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 布鲁兹老爷 中级黑马   /  2015-10-13 13:41  /  564 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

字符串C语言的字符串是由一堆有序的字符串组成的数组,以字符'\0'作为结尾。


a. char s1[8] = "it";占用8个字节的内存空间,但是只使用了3个字节,'i','t','\0'


b. char s2[8] = {'i','t','\0'};也是一个字符串


c. char s3[8] = {'i','t',0};也是一个字符串


d. char s4[8] = {'i','t'} 也可以作为一个字符串用,因为它后面6个都是0,但不推荐这么做。


e. char s5[] = {'i', 't'};不是一个字符串,因为它只有2个元素,字符串结尾需要'\0'结尾。


f. char s6[] = "haha";sizeof(s6) 的结果是5,因为有一个隐藏的'\0'字符。


g. 把不带'\0‘的字符数组当做一个字符串输出,后果会很严重,会把它和它后面内存的东西一块输出。因为%s会从数组的地址开始,一个一个字符输出,直到遇到'\0'结束。


h. 字符串常用的函数


int strcmp(constchar *, const char *);
这个函数比较的是字符串,不是数组。用于比较字符串,不是字符。
strcmp(s1,s2);
如果s1 >s2那么 返回值 > 0
如果s1 = s2那么 返回值 == 0
如果s1 <s2那么 返回值 < 0
int strncmp(constchar *,constchar *, size_t);
strcmp函数比较字符串时,一直比较找到不同的响应字符,搜索可能要进行到字符串结尾处。
而strncmp()函数比较字符时,可以比较到字符串的不同处,也可以比较完由第三个参数指定的字符数。
char *strcpy(char*,const char*);
strcpy(s1,s2);
拷贝s2字符串的内容到s1中。
strcpy()接受两个字符串指针参数。指向最初字符串的第二个指针可以是一个已声明的指针、数组名或字符串常量。指向复制字符串的第一个指针应指向控件大到足够容纳该字符串的数据对象,不如数组。
strcpy()它的返回值是一第一个参数的值,即一个字符的地址;其次,第一个参数不需要指向数组的开始,这样就可以复制数组的一部分。
char *strncpy(char*,const char*, size_t);
strcpy()不检查目标字符串是否容纳的下源字符串。所以使用strncpy()比较安全。它需要第三个参数来致命最大可复制的字符数
char *strcat(char*,const char*);
strcat(s1,s2);
它将第二个字符串的一份拷贝添加到第一个字符串的结尾。函数返回它的第一个参数的值,即其后添加了第二个字符串的那个字符串中第一个字符的地址。
strcat()函数并不检查第一个数组是否能够容纳第二个字符串。如果没有为第一个数组分配足够大得空间,多出来的字符溢出到相邻存储单元时就会出现问题。这时候可以使用strncat()函数。
char *strncat(char*,const char*, size_t);
这个函数需要另一个参数赖志明最多允许添加的字符的数目。
例如:
strncat(s1,s2,10);
把s2字符串中的内容添加到s1上,知道加到第10个字符或遇到空字符为止。
size_t strlen(constchar *);
strlen()可以获得字符串的长度,不包括'\0'



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马