问:可不可以说字符数组就是字符串?
答:不可以,C语言规定:只有以“\0”结尾的字符数组才称字符串;
核心:任意字符数组,如果希望是一个字符串,则必须以“\0”结尾,才能够用字符串的格式化输出。 字符分字符和字符串字符型常量是用引号括起来的一个或一串字符,例如:‘a’或“abc”都是合法的字符或字符串; 字符常量有以下特点:1.字符常量只能用单引号‘’,不能用其它符号;
2.字符只能是单个字符,不能是多字符;
3.字符可以是字符数组中的任意字符,但数字被定义为字符型后不能参与数值运算; 字符串1.字符串是由多个字符组成的;
2.字符串中的个数为字符串的长度,长度为“0”的字符串为空字符;
3.存储字符串时,由系统在字符串的末尾自动加上一个“\0”作为字符串的结束标志,例如:字符串“welcome”在内存中的存储形式如下: - #include <string .h>
- strlen(字符串变量名)//用来计算字符串变量的长度,需要引进新的头文件
- /*
- 字符串“welcome”的存储
- w e l c o m e \0
- 字符串长度要比字符的长度多1个'\0'的长度,且一个中文字符占3个字节
- */
sizeof与strlen的区别:
sizeof计算字符串时包含了’\0’,而strlen计算时,没有包含’\0’; 如何定义字符串?定义字符串有三种方式 - #include <stdio.h>
- int main(int argc,const char* argv[]){
- char a[4]={'a','b','c','\0'};//以字符数组+'\0'的方式定义
- char b[]="abc";//常规方式定义
- char* c="abc";//指针方式定义
- return 0;
- }
字符串常见操作输入输出puts(字符串名)用输出字符串;
gets(字符串名)用于输入字符串;(有风险,容易造成内存溢出) 字符串拼接strcat(字符串名1,字符串名2);
是将字符串2拼接到字符串1当中,所以拼接时第一个字符串变量的空间要足够大; 字符串拷贝strcpy(字符串名1,字符串名2);
把字符串名2中的内容替换到字符串名1中,而对字符串2没有任何影响; ***字符串比较***strcmp(字符串1,字符串2);
strcmp会返回一个int类型的值,当strcmp==0时,说明这两个字符串是一样的;
底层是通过ASCII码来比较的;
|