1、字符串字面值
C语言是按照和字符串变量一样的方式来存储字符串字面值。当C语言编译器在程序中遇到长度为n的字符串字面量时,它会为字符串字面量分配长度为n+1的内存空间,在末尾增加一个额外的字符——空字符(\0)。通常情况下可以在任何C语言允许使用 char * 指针的地方使用字符串字面量。
2、字符串变量
只要保证字符串是以空字符(‘\0’)结尾的,任何一个一维字符串数组都可以用来存储字符串。
3、字符串初始化
一维字符数组的长度要比字符串的实际长度至少大1。在对字符数组赋值时,字符数组前段是字符串的值,后面多出的位全是空字符'\0'。初始化时可不知道字符数组的长度,此时字符数组长度为字符串的实际长度加1,如char a[]="zjw",则数组a的长度为4,因为最后一位要存'\0'。
4、字符数组与字符指针
当字符指针指向字符数组的首地址时,字符指针可以当作此字符数组的数组名使用,此时貌似和字符数组一样。但是当字符指针指向字符串常量时,此时就体现出字符数组名与字符指针的差别,字符数组内的每个字符是可以变化的,但字符指针指向的字符串内的字符却是不可以变化的。
5、字符串的输出
可以用printf("%s",str)来输出字符串str,可以通过printf("%.6s,str")来控制只输出字符串str的前6个字符。
也可以使用puts(str)来输出字符串str。
6、字符串的输入
可以使用scanf("%s",str)来输入字符串str,scanf读入时会忽略字符串前面的空白字符(空格、换行、制表符),然后读入字符串直到遇到下一个空白字符为止。
也可以使用gets(str)来读入字符串,gets读入时不会忽略字符串前面的空白字符,并且也不是遇到所以的空白符就停止,而是遇到换行符时才终止。此外,gets会忽略换行符,不把它存在字符串中,而是用空字符‘\0’代替。
另外,也可以自己写函数逐个字符读入,但此时要注意读入完成后,字符串末尾要加'\0'.