九.字符串
单个字符的定义
char i = 'a';
单个字符创建后为常量
字符串
C语言中没有字符串这种数据类型,可以通过char型数组来替代;数字0(和字符‘\0’等价)结尾(0不属于字符串)的char数组就是一个字符串,但如果char型数组没有以数字0结尾,那么就只是普通字符数组 。注意: C语言中,字符串一定是一个char型数组,但char型数组未必是字符串。
char ch[]="abc"; char ch[] = { 'c', 'o', 'p', 'r', 'o', 'g', '\0' };//必须立刻赋值 char ch[10]="abc";//有初始的指定长度; 其中定义的数组的元素数要比实际赋值的数量多一,用于存放\0位置
字符串常变量
- "Hello"就是一个字符串常量,编译器会把他变成一个字符数组放在某处,数组长度为6。两个相邻的字符串会自动连接起来。
- char *s = "Hello" s是一个指针,初始化指向一个字符串常量。这个常量所在的地方固定,所以s实际上是const char *s
- 如果需要修改字符串 应该用数组 char s[ ] = "Hello" ;
指针还是数组?
构造 -> 指针
处理 -> 数组
字符串输入输出
1.scanf和printf
使用”%s”参数(单个字符用”%c”)
char str [8]; scanf("%s",str);
- scanf读一个字符串 (空格或回车为止,并且自动在串后面加上结束标志'\0')
- scanf是不安全的,因为不知道要读的长度
- 可以用scanf("%7s",str); 表示最多读多少个
- 输出%可以用printf("%%");
2.getchar和putchar
getchar函数将输入的第一个字符作为函数的返回值,通常使用这个函数时,将函数的返回值赋予一个字符变量或者整型变量。
#include <stdio.h> main() { char ch; ch = getchar(); printf("%c %d\n",ch,ch); printf("%c %d\n",ch-32,ch-32); return 0; }
putchar(ch)函数是向标准输出设备(屏幕)上输出一个字符的C语言标准函数。ch可以是变量、常量,转义字符或表达式。数据类型可以是字符型或整型。当ch是整型数据时,输出的是与其相对应的ASCII码值。
字符串函数
都在头文件string.h中
1.计算字符串长度——strlen()
计算数组中‘\0’之前的字符的长度,它的返回值是无符号整形(可以强制类型转换)
char str[] = "China";
printf("%d",strlen(str));
2.字符串赋值——strcpy()
strcpy(str1,str2):C语言中字符串赋值不能直接使用 ’=’ 进行赋值。将s2赋给s1
char str1[50];
char str2[10] = "Chinese!";
strcpy(str1,str2);
printf("%s\n",str1);
3.字符串拼接——strcat()
将str2字符串拼接到str1字符串后
char str1[50] = "I am";
char str2[10] = " Chinese!";
strcat(str1,str2);
printf("%s\n",str1);
4.strcmp
比较两个字符串中对应位置上的字符大小,直到找到不同或'\0'。当str1>str2时,返回>0的数;当str1<str2时,返回<0的数;当str1=str2时,返回0。