C/C++字符串使用整理

 首先,C语言中是没有专门的字符串类型的变量的,一般存储字符串都是使用字符char类型的数组。这一点有别于C++。

  ​字符串类型与一般的字符序列相比,最大的区别在于最后多了一个'\0'字符,它也被称作字符串结束符。注意,字符'\0'对应的ASCII码的值也是0。

1. 字符串与字符数组的区别

例1:

char s1[5]={'h','e','l','l','o'};  是字符数组

char s2[6]={'h','e','l','l','o','\0'};  或者  char s2[]="hello";  是字符串​(后一种系统自动加字符串结束符)

总结:有'\0'的才是字符串。

​2. 输入输出

对于上述例子中的s1,只能用%c循环打印每个字符;对于​s2,可以用%c循环打印,也可以用%s直接整体输出。​

使用printf()和%s整体输出字符串的规则:​遇到'\0'就停止。使用scanf()和%s整体输入字符串时,不能有空​​白字符,例如空格等。

例2:

​char s2[]="he\0llo";  printf("%s",s2);  打印结果为he

scanf("%s",s2); 输入"   he llo",则s2为"he"​

​关于puts()和gets()

puts(str)会打印字符串str然后把'\0'转换成'\n',相当于printf("%s\n",str)。也是遇到'\0'就停止。

gets(str)则不同于scanf,遇到空白字符不会停止,直到遇到回车字符才会停止读入。

注意:如果要使用gets()和puts(),需要加入头文件

3. 其它常用字符串处理函数

注意:以下函数都需要包括

strlen(str)  :返回str中有效字符个数,不包括'\0'

strcpy(str1,str2)   :将str2复制给str1

strcpyn(str1,str2,n)    :将str2的前n个字符复制给str1​

strcat(str1,str2)    :将str2连接到str1后面​

strcmp(str1,str2)    :按ASCII码比较,相等返回0,str1小返回负值,str1大返回正值​

strlwr(str)    :大写字母转换成小写字母

strlwr(str)    :小写字母转换成大写字母​

posted @ 2019-05-04 17:26  赖晓桐  阅读(242)  评论(0编辑  收藏  举报