C语言的字符数组和字符串的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言的字符数组和字符串的区别相关的知识,希望对你有一定的参考价值。
从定义到使用,书写格式,输入输出间的区别是什么?
回答越详细,分数越高,我希望真正懂编程的朋友用自己的语言回答我。
1、长度不同:
对于字符数组,其长度是固定的,其中任何一个数组元素都可以为 null 字符。因此,字符数组不一定是字符串。字符串的结尾是以null 字符结尾,所以长度会有所不同。
2、结尾不同
对于字符串,它必须以 null 字符(也就是'\\0',用十六进制表示为 0x00)结尾,其后的字符不属于该字符串。
字符串一定是字符数组,它是最后一个字符为 null 字符的字符数组。字符数组则不会自动增加任何东西。
3、对于字符串,可以直接使用 printf 的 %s 打印其内容;而对字符数组,很显然使用 printf 的 %s 打印其内容是不合适的。
扩展资料:
字符串函数应用
1.连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn.
例:concat('11','aa')='11aa';
2. 求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。
例:copy('abdag',2,3)='bda’
3. 删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。
例:s:='abcde';delete(s,2,3);结果s:='ae';
4. 插入子串。 过程Insert(s1,s2,I) 把s1插入到s2的第I个位置
例:s:=abc;insert('12',s,2);结果s:='a12bc';
参考资料:百度百科 c语言(c语言)
参考技术AC语言的字符数组和字符串的区别:
1、定义的区别
字符数组是用来存放字符的数组。
字符串是由数字、字母、下划线组成的一串字符。
2、使用的区别
字符数组是在C语言中被用来存放字符串的,因为C语言中没有字符串类型,字符串是存放在字符型数组中的。
字符串可以将字符串直接赋值给字符数组,例如:char str[30] = "c.biancheng.net";
3、书写格式的区别
字符数组的书写一般形式为: char 数组名[数据长度] 。
字符串的书写一般记为 s=“a1a2···an”(n>=0)。
4、输入输出的区别
字符数组的输入用getchar()或scanf()的'%c'格式符对数组进行字符赋值。输出用putchar()或printf()的‘%c’格式符对数组进行字符赋值。
字符串在C语言中输出字符串时会逐个扫描字符,直到遇见 '\\0' 才结束输出。
参考资料来源:百度百科——字符数组
百度百科——字符串
1.长度不同
对于字符数组,其长度是固定的,其中任何一个数组元素都可以为 null 字符。因此,字符数组不一定是字符串。字符串的结尾是以null 字符结尾,所以长度会有所不同。
2.结尾不同
对于字符串,它必须以 null 字符(也就是'\\0',用十六进制表示为 0x00)结尾,其后的字符不属于该字符串。
字符串一定是字符数组,它是最后一个字符为 null 字符的字符数组。字符数组则不会自动增加任何东西。
3.对于字符串,可以直接使用 printf 的 %s 打印其内容;而对字符数组,很显然使用 printf 的 %s 打印其内容是不合适的。
4.正规性
C 语言中并不存在字符串这个数据类型,而是使用字符数组来保存字符串。
用来存放字符的数组称为字符数组,例如:
char a[10]; //一维字符数组
char b[5][10]; //二维字符数组
char c[20]='c', ' ', 'p', 'r', 'o', 'g', 'r', 'a','m'; // 给部分数组元素赋值
char d[]='c', ' ', 'p', 'r', 'o', 'g', 'r', 'a', 'm' ; //对全体元素赋值时可以省去长度
字符数组实际上是一系列字符的集合,也就是字符串(String)。在C语言中,没有专门的字符串变量,没有string类型,通常就用一个字符数组来存放一个字符串。
5.C语言规定,可以将字符串直接赋值给字符数组,例如:
char str[30] = "c.biancheng.net";
char str[30] = "c.biancheng.net"; //这种形式更加简洁,实际开发中常用
扩展资料:
字符串函数应用
1.连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn.
例:concat('11','aa')='11aa';
2. 求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。
例:copy('abdag',2,3)='bda’
3. 删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。
例:s:='abcde';delete(s,2,3);结果s:='ae';
4. 插入子串。 过程Insert(s1,s2,I) 把s1插入到s2的第I个位置
例:s:=abc;insert('12',s,2);结果s:='a12bc';
5. 求字符串长度 length(s) 例:length('12abc')=5;
在ASP中 求字符串长度用 len(s)例: len("abc12")=5;
6. 搜索子串的位置 pos(s1,s2) 如果s1是s2的子串 ,则返回s1的第一个字符在s2中的位置,若不是子串,则返回0.
例:pos('ab','12abcd')=3;
7. 字符的大写转换。Upcase(ch) 求字符ch的大写体。
例:upcase(a')='A';
8. 数值转换为数串。 过程 Str(x,s) 把数值x化为数串s.
例:str(12345,s); 结果s='12345';
9. 数串转换为数值。 过程val(s,x,I) 把数串s转化为数值x,如果成功则I=0,不成功则I为无效字符的序数,第三个参数也可不传
例:val('1234',x,I);结果 x:=1234;
参考资料:字符数组-百度百科
C语言的字符数组有两种,比较方式也有所不同。
1 字符串。
C语言的字符串是用字符数组表示的。约定以'\\0'(ascii码0)作为结尾标记。
对于字符串类的字符数组,可以用string.h中的strcmp函数进行比较。
int strcmp(char *str1, char *str2);
其比较规则为:
a, 从左向右依次比较每个元素;
b, 如果出现str1的元素ascii码比较大,则返回1;如果出现str2元素ascii码比较大,则返回-1。如果相等,则继续。
c, 如果一直相等,直到遇到\\0,这时检查是否均为\\0,如果均为\\0,那么返回0;
d, 如果str1到\\0,而str2没到,返回-1; 否则返回1。
总结规则就是,如果str1比str2大,返回1;如果相等,返回0;如果str1小,返回-1。
扩展资料:
注意:实际上,一个char类型字面值是一个int类型字面值的另一种表示方式,只不过使用了一种有趣的句法,例如当42和'*'都表示char类型的值时,它们是两个完全相同的值。
然而,在C++中情况有所不同,C++有真正的char类型字面值和char类型函数参数,并且通常会更仔细地区分char类型和int类型,整数数组和字符数组没有字面值。
然而,如果没有字符串字面值,程序编写起来就会很困难,因此C提供了字符串字面值。
需要注意的是,按照惯例C字符串总是以NUL字符结束,因此C字符串的字面值也以NUL字符结束,例如,“six times nine”的长度是15个字符(包括NUL终止符),而不是你看得见的14个字符。
参考资料:百度百科 c语言(c语言)
参考技术DC语言的字符数组和字符串的区别如下:
1、对于字符数组,其长度是固定的,其中任何一个数组元素都可以为 null 字符。因此,字符数组不一定是字符串。
2、对于字符串,它必须以 null 结尾,其后的字符不属于该字符串。字符串一定是字符数组,它是最后一个字符为 null 字符的字符数组。
3、C语言中没有一个用于表示字符串的关键字,c语言的字符串由C的字符数组变形而成,末尾加上'\\0',字符串比字符数组多一个'\\0'。
以上是关于C语言的字符数组和字符串的区别的主要内容,如果未能解决你的问题,请参考以下文章