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) 编辑 收藏 举报