09-04字符串 的基本概念
1.概念 字符串是位于双引号中的字符序列。在内存中以'\0'结束,所以占字节比实际多一个。
2.注意:
a.可以把一个【字符常量】赋值给一个【字符变量】,但是不能把【字符串常量】赋值给【字符变量】。
b.C语言中没有【字符串变量】,可以用字符数组来存放字符串。
3.字符数组的定义
3.1 形式与前面介绍的数值数组相同 : char 数组名[常量表达式]
4.字符数组的输入输出
使用格式字符串“%s”,标书输入输出的是一个字符串。从指定的位置开始,输出,直到遇到了‘\0’结束。
例如:
- char str[] = "Hello,dark horse";
- printf("str = %s", str);
复制代码
打印结果:
str = Hello,dark horse
注意:如果- str[] = "Hello \0,dark horse";
- printf("str = %s", str)
复制代码
打印结果:
str = Hello
因为从开始位置直到遇到了'\0'时结束输出
5.注意事项
a.如果以%s格式进行输入的字符串有空格,则空格之后的字符无法被保存。
6.字符串结束符的使用- char ch[] = {'a','b','\0'}; // 加'\0'后就可以当做一个字符串使用
复制代码
a.字符数组在初始化时没有在最后加上‘\0’,那么输出时会有预料不到的后果。
7.字符串长度的计算方法
7.1 用sizeof- //此处字符串的长度 恰好等于数组在内存中占用的字节数
- char ch[] = "amos";
- //次数字符串长度不等于数组在内存中占用的字节数
- char arr[] = "am\0os";
-
- printf("ch len = %ld\n",sizeof(ch));
- printf("arr len = %ld\n",sizeof(arr));
复制代码
7.2专门给计算字符串长度的方法
a.使用字符串函数 strlen(arr)
b。以‘\0’作为条件,进行判断,遇到'\0'就结束,即‘\0’之前就是字符串长度
例如- char arr[] = "abcd";
- //在不知字符数组长度的情况下,求字符串长度
- int i = 1;
- while(arr[i - 1] !='\0') i++;
- printf("length = %d", i);
复制代码
8.字符串处理函数
用于输入输出的字符串函数,在使用前应包含头文件“stdio.h”,使用其他字符串函数则因包含头文件“string.h”
8.1 字符串 输出函数 puts
a.puts可以自动换行
b.也可以不是数组的首地址,可以是元素地址
c.必须是字符数组- char str[] = "Hello Amos!!";
- puts(str);
- printf("%s",str);
复制代码
打印结果:
Hello Amos!!
Hello Amos!!
8.2 输入函数 gets,用来接受一个字符串
a.使用gets会给一个不安全的警告,如果长度是100,但是输入了120个字符,不会警告,存在越界问题
b.可以接受空格
c.puts不可以格式化输出- char str[100];
- scanf("%s", str);//缺陷是输入字符串中不能有空格
复制代码
8.3 连接函数 strcat 需要包含string.h头文件
strcat(A, B); 把B接到A得后面
例如:- char str[] = "Amos!!";
- char arr[20] = "你好 ";//字符数组arry一定要指定长度,而且要足够容纳str,否则运行时会出错
- strcat(arr, str);
- printf("%s",arr);
复制代码
打印结果:
你好 Amos!!
8.4 字符串拷贝函数 strcpy
格式: strcpy(oldStr, newStr),把newStr拷贝到oldStr中,newStr会覆盖掉oldStr中的内容
例如:- char str[] = "Hello Amos!!";
- char arr[20] = "你好 Amos";
- strcpy(arr, str);
- printf("%s",arr);
复制代码
打印结果:
Hello Amos!!
8.5 比较两个字符串的大小 strcmp
规则:比较字符的ASCII码值或字母的字典序
格式:strcmp(str1, str2)
比较过程:逐个取两个字符串的字符对应位想比较,从第一位不同的位开始,就能确定那个字符串大小
返回值:整型, > 0 str1 > str2
< 0 str1 < str2
= 0 str1 = str2
例如:- char str[] = "Hello Amos!!";
- char arr[] = "Hello Amos!!";
- int result = strcmp(arr, str);
- printf("result = %d", result);
复制代码
打印结果:result = 0
例如:- char str[] = "Hello Amos!";
- char arr[] = "Hello Amos!!";
- int result = strcmp(arr, str);
- printf("result = %d", result);
复制代码
打印结果:result = 33
例如:- char str[] = "Hello Amos!!";
- char arr[] = "Hello Amos!";
- int result = strcmp(arr, str);
- printf("result = %d", result);
复制代码
打印结果:result = -33
9. 计算字符串长度函数 strlen
strlen不含'\0'
例如:- char str[] = "Hello\0 Amos!";
- printf("result = %ld", strlen(str));
复制代码
打印结果:
result = 5
|
|