c语言字符串数组?

Python013

c语言字符串数组?,第1张

字符串是连续的字符序列,最后以空字符'\0'作为终止符。一个字符串的长度指所有字符的数量,但不包括终止符。在 C 语言中,没有字符串类型,自然也就没有运算符以字符串为操作数。

字符串被存储在元素类型为 char 或宽字符类型数组中(宽字符类型指 wchar_t、char16_t 或 char32_t)。宽字符组成的字符串也称为宽字符串(wide string)。

C 标准库提供了大量的函数,它们可以对字符串进行基本操作,例如字符串的比较、复制和连接等。在这些传统的字符串函数以外,C11 新增了这些函数的“安全”版本,它们能确保字符串操作不会超出数组的边界。

可以使用字符串字面量来初始化任何字符类型数组。

知道以下两点即可:

一、字符串以'\0'结尾

二、arr[2][4]在内存中占连续的八个字符,从左往右分别为

a00

a01

a02

a03

a10

a11

a12

a13

//a00即arr[0][0],其它同

在程序中:

strcpy(arr[0],"you")

//a00='y'

a01='o'

a02='u'

a03='\0'

strcpy(arr[1],"me")//a10='m'

a11='e'

a12='\0'

a03

=

'&'

,,,,知道了吧?呵呵。

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。

2 不带\0结束的字符数组。

对于此类数组,没有库函数可供使用,只能自己写函数进行比较。规则可以仿照strcmp的规则。

由于没有\0作为结束,所以参数中必须传入每个数组的元素个数。

int char_array_cmp(char *s1, int l1, char *s2, int l2)

{

int lmin = l1>l2? l2:l1//较小长度者。

int i

for(i = 0i <lmini ++)

if(s1[i] >s2[i]) return 1

else if(s1[i] <s2[i]) return -1

//运行到这里,表示所有已判断元素均相等。

if(l1 == l2) return 0

if(l1 >l2) return 1

return -1//l1 <l2的情况。

}