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]初始化字符串数组以后,该数组是能够修改的string
只能使用 char str[6] = "Hello",不能够char str[6]; str[6] = "Hello"编译
若是要构造字符串,用数组变量
若是要处理字符串,用指针tab
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函数,作链接,将第二个参数字符串拷贝到第一个字符串后面
安全问题
若是拷贝或者链接并不知道目的地的空间,