C:字符数组和字符指针

  

      C语言中没有string类型,字符串都是通过char字符数组来存储的

  char * str = "Hello" (字符指针)

  char str[6] = "Hello" (字符数组)

  char line[10] = "Hello"  编译器编译后数组长度为6,自动生成\0都是{'H','e','l','l','o','\0'}

  当用char *str 初始化字符串数组之后,该数组为只读数组(实际上是const常量,不可修改),在代码段中,不可以对其修改,如s[0] = ‘s’,否者报错

     char * str = "Hello" 等价于char * str;  str = "Hello"

  当用char str[6]初始化字符串数组之后,该数组是可以修改的

     只能使用 char str[6] = "Hello",不可以char str[6];  str[6] = "Hello"

     如果要构造字符串,用数组

     如果要处理字符串,用指针

   char *表示的是字符串或者是单个字符

 

  要写入字符串数组,要开辟新的空间(以后补充)

      

  对于逃逸字符,可以使用//来输出

 

字符串的输入和输出

  char string[8];

  scanf("%s",&string);

  printf("%s",string);

    输入输出以空格,tab和回车来区分  比如输入hello world!  只能读取到hello,输入hello

    但是scanf如果输入超过8个字符,会发生abort数组越界

  建议——安全的输入

    scanf("%7s",&string);表示输入的字符只取7个字符,剩余的不要了(第8个给'\n')

  

常见错误

  char * string;

  scanf("%s",&string)

  只是定义字符串指针变量,没有初始化,会报错

 

常见的string函数

  #include<string.h>

  strlen函数,用于返回s的长度,不包括\0

  strcmp函数,比较两个函数的大小,返回 0:长度相等  比较字符串中从第一个开始一直到有不同的值,之间ASCII的差值

  strcpy函数,将第二个参数字符串拷贝到第一个字符串

  strcat函数,做连接,将第二个参数字符串拷贝到第一个字符串后面

  安全问题

    如果拷贝或者连接并不知道目的地的空间,

    

posted on 2019-05-09 20:09  zhaoy_shine  阅读(252)  评论(0编辑  收藏  举报

导航