字符串和字符串函数

字符串

字符串是以空字符(\0)结尾的char类型数组。

在程序中定义字符串

字符串字面量

  • 用双引号括起来的内容称为字符串字面量,也叫做字符串常量

    char greeting[50] = "Hello!";  
    
  • 字符串常量属于静态存储类别,这说明如果在函数中使用字符串常量,该字符串只会被储存一次,在整个生命周期存在。

数组和指针的区别

     char ar1[] = "Something is point at me.";
     char * pt1 = "Something is point at me.";
  • 在数组形式中,ar1是地址常量。不能更改ar1,如果改变了ar1,则意味着改变了数组的存储位置(即地址)。可以进行类似ar1+1这样的操作,标识数组的下一个元素。但是不允许进行++ar1这样的操作。
  • 指针变量(pt1)最初指向该字符串的首字符,但是它的值可以改变。因此可以使用递增运算符,++pt1将指向第二个字符’o’。

总之,初始化数组把静态存储区的字符串拷贝到数组中,而初始化指针只把字符串的地址拷贝给指针。

字符串函数

输入、输出函数

puts()

接受一个字符串,输出到屏幕上,末尾自动加换行符。

fgets()和fputs()

fgets(char类型数组,int,文件指针)
  • fgets()函数的第二个参数指明了读入字符的最大数量。如果是n,那么fgets()将读入n-1个字符,或者读到遇到的第一个换行符为止。
  • 如果fgets()读到一个换行符,会把它存储在字符串中
  • fgets()函数的第三个参数指明要读入的文件。如果读入从键盘输入的数据,则以stdin(标准输入)作为参数。
  • fgets()返回指向char的指针,如果一切进行顺利,返回的地址应与第一个参数地址相同;若读到文件结尾,返回空指针(NULL)。
fputs(char类型数组,文件指针)
  • fputs()函数的第二个参数指明要写入数据的文件,如要打印在显示器上,用stdout(标准输出)。
  • fputs()不会在末尾加换行符

字符串函数

strlen()

  • 接受一个字符串作为参数,返回它的长度。

strcat()和strncat()

  • strcat()用于拼接字符串,接受两个字符串作为参数,把第二个字符串的备份附加在第一个字符串末尾,返回第一个参数(即拼接后第一个字符串的地址)。
  • strncat()前两个参数与strcat()相同,第三个参数指定了最大添加字符数。例如,strncat(bugs,addon,13)将把addon字符串的内容附加给bugs,在加到第13个字符或遇到空字符时停止(无论哪种情况都要添加空字符)。

strcmp()和strncmp()

  • strcmp()接收两个字符串作为参数,若相同则返回0,strcmp()依次比较每个字符直到发现不同的字符为止,比较的依据是机器排序序列,即字符的数值,通常是ASCⅡ值(第一个参数的减去第二个参数的)。
  • strncmp()函数在比较两个字符串时,可以比较到字符不同的地方,也可以只比较第3个参数指定的字符数

strcpy()和strncpy()

  • strcyp()是字符串赋值函数,接受两个字符串指针作为参数,可以把指向源字符串的第2个指针声明为指针、数组或字符串常量;而指向源字符串副本的第一个指针应指向一个数据对象(如,数组),且该对象有足够的空间储存源字符串的副本。声明数组将分配存储数据的空间,声明指针只分配存储一个地址的空间
  • strcpy()返回类型是 char *,是第一个参数的值,即一个字符的地址。第一个参数不必指向数组的开始,这个属性可以用于拷贝数组的一部分。
  • strncpy()第3个参数指明可拷贝的最大字符数。

sprintf()

  • 第一个参数是一个char类型数组,把获取的输入格式化为表纯形式储存在其中。(类比printf)。

char *strchr(const char * s, int c);

  • 如果s字符串中包含c字符,返回指向s字符串中首次出现c字符的地址,没找到,返回NULL。

char *strrchr(const char * s, int c);

  • 如果s字符串中包含c字符,返回指向s字符串中最后出现c字符的地址,没找到,返回NULL。

char *strpbrk(const char *s1, const char *s2);

  • 如果s1字符串中包含s2字符串中的任意字符,返回s1中首次出现s2中字符的地址,否则返回NULL。

char *strstr(const char *s1, const char *s2);

  • 该函数返回s1字符串中s2字符串出现的收位置,否则返回NULL。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值