字符数组和字符串

落爺英雄遲暮 提交于 2019-11-27 20:13:40

以32位系统为例。

1、定义和初始化
字符数组:char c[10];
字符串:char s[] = "hello";

字符数组的定义和初始化可以在一起或者分开:
char c[10] = "qwer"; 或者
char c[10];
c[0] = 'q'; c[1] = 'w';c[2] = 'e'; c[3] = 'r';
不能这样:c = "qwer"
初始化时要注意数组大小,同时要保留\0的位置。
用printf打印字符数组时,数组中必须要有\0,否则会造成打印越界。

字符串的定义和初始化不能分开,但可以修改指定字符,如
char s[] = "hello"; s[1] = 'o';

2、sizeof和strlen
sizeof(c)=10;就是实际的数组大小
sizeof(s)=6;大小是字符的个数+1(1是隐藏'\0')
strlen不包含\0,如:
char c[10] = "wwer"; strlen(c) = 4;
char s[] = "helloz"; strlen(s) = 6;

3、引用
两者的引用方式相同,有两种:通过下标或者指针的方式,如:
字符数组:c[1] = 'r' 或者 *(c + 1) = 'r'
字符串:s[1] = 'r' 或者 *(s + 1) = 'r'

4、字符串相关操作函数
主要有以下这些,基本都定义在string.h里面。linux系统下面可以用man命令查看每个函数的用法。如:
xxx@ubuntu:~/work/code/ctest$ man str
strace strchr strcpy strerror strftime strlen strncpy strpbrk strsignal strtof strtol strtoul strverscmp
strcasecmp strchrnul strcspn strerror_r string strncasecmp strndup strptime strspn strtoimax strtold strtoull strxfrm
strcasestr strcmp strdup strfmon strings strncat strndupa strrchr strstr strtok strtoll strtoumax
strcat strcoll strdupa strfry strip strncmp strnlen strsep strtod strtok_r strtoq strtouq
xxx@ubuntu:~/work/code/ctest$ man strlen //查看strlen的用法

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!