当前位置: 移动技术网 > IT编程>开发语言>C/C++ > C语言(20)-----字符串知识点大全

C语言(20)-----字符串知识点大全

2018年10月13日  | 移动技术网IT编程  | 我要评论

新辉煌illusion,初唐逍遥王爷,qq网名个性

一 字符数组定义和初始化

字符串在c语言中是一种常用的数值对象,用于表示若干个字符的集合。

先了解第一个关于字符的知识点,字符数组的使用,字符数组顾名思义就是元素为字符的数组,

用于存储char数据类型的数组容器。定义与使用与其他类型的数组基本一样。

字符数组的定义语法:

char 数组名[数组容量];

注: 在定义数组容量时,通常需要通过常量表示,方便维护。

关于一维数组:一维数组

eg:

#include "stdio.h"

#define arr_length 10

void main() {

int i = 0;

/* 字符数组的定义和初始化 */

char arr[arr_length] = {'a','b','c','d','e','f','g','h','i','j'};

/* 循环输出数组元素 */

for (i=0;i程序运行结果:

 

\

 

char与整数是相通的,char型可以看做是字长为1的字节的整数,所以也可以用整数数组来存储字符。用整数数组会存在一个问题,就是浪费存储空间,每个char占用1个字节,而每个int则占用4个字节,这就是使用int存储char浪费空间的原因,结论就是用char数组容器存char。字符数组初始化:字符数组的初始化与其它类型数组的初始化一样,分别有三种形式:1. 指定数组容量,给每个元素初始化char arr[4]={'a','b','c','d'};2. 指定数组容量,给部分元素初始化,其余元素编译器自动初始化为0char arr[4]={'a','b'};3. 不指定数组容量初始化,编译器根据元素自动计算长度,然后给每个元素赋值cahr arr[] = {'a','b','c','d','c'};关于初始化的实例:#include "stdio.h"

#define arr_length 5

void main() {

int i = 0;

/* 数组3中初始化方式 */

/* 第一种: 指定数组容量,初始化全部元素 */

char arr1[arr_length] = {'a','b','c','d','e'};

/* 第二种: 指定数组容量,初始化部分元素 */

char arr2[arr_length] = {'a','b','c'};

/* 第三种: 不指定数组容量初始化 */

char arr3[] = {'a','b','c'};

printf("******第一种初始化输出******\n");

for (i=0;i

二 二维字符数组二维字符数组的定义,初始化与其它类型的二维数组一样。参考:二维数组三 字符串常量字符串常量是指用以表示字符串数据的常量,是包含在一对引号" "中的字符集合。比如:"hello,world"该字符串常量在c语言中被处理为一维字符数组存储在内存中的一块连续的区域内。但是字符串常量的存储与一维字符数组的存储是不一样的。将"hello,world"字符串常量的在内存中的存储区域如下:

 

\

 

定义字符数组:

char arr[] = {'h', 'e', 'l', 'l', ',', 'w', 'o', 'r', 'l', 'd'};字符数组的存储如下:

 

\

 

从字符串与字符数组二者的存储形式可以看出,字符串常量与字符数组存储十分相似,只是在字符串常量的存储最后多了个\0, 这个\0的作用是字符串定义结束的标识,也就是字符串的终止符。在处理字符串的时候只要遇到\0,标识该条指令处理结束,无需往下处理。eg:#include "stdio.h"

void main() {

printf("hello\0world");

}运行结果:

 

\

 

从运行结果可以看出,理论上应该把输出函数中双引号内容都输出,可是只输出了hello后半部分没有输出,是因为编译器在处理时遇到了\0,终止该条指令处理,直接输出hello四 字符串变量字符串变量实际就是一维字符数组,字符串变量的定义通过一维数组配合完成,使用字符串常量初始化一维数组,就可以得到一个字符串变量,格式如下:char str[15] = {"hello,world"};将内容赋值给数组str的前几个相应的内存空间,不足的自动初始化为0;当然我们可以去掉花括号{}:char str[15] = "hello,world";也可以不指定数组容量:char str[] = "hello,world";实例:#include "stdio.h"

void main() {

char str1[15] = {"hello,world"};

char str2[15] = "hello,world";

char str3[] = "hello,world";

printf("%s\n",str1);

printf("%s\n",str2);

printf("%s\n",str3);

}

运行结果:

 

\

 

注:字符串变量在内存中以一维数组的形式存放。五 格式化输入和输出字符串输入:通过scanf函数实现格式化输入,字符串格式符: %s。scanf语句会以字符串的形式读取数值,直到遇到空白符,比如空格符号,回车符,制表符,字符串终止符,将会停止读取。也就是说,单独说空格符的例子,如果你输入hello world,中间有空格符,当你回车后,scanf输入函数读取数值将会只读入hello这个几个字符,因为读到o之后遇到了空格,则读入结束。eg:#include "stdio.h"

void main() {

char str[] = {"hello,world"};

/* 初始化的str */

printf("%s\n",str);

printf("请输入字符串,然后按下回车:\n");

scanf("%s",&str);

/* 输入的str,将初始化的覆盖掉 */

printf("%s\n",str);

}运行程序,然后输入想要输入的字符串,然后回车,打印出输入的字符串。输出:通过printf函数实现格式化输出,字符串格式符: %s。格式: printf("%s", str);将从str开始输出,知道遇到\0结束为止。eg:#include "stdio.h"

void main() {

char str1[] = "hello,world";

char str2[] = "hello,world,你好!";

char str3[] = "hello,world\0,你好!";

printf("%s\n",str1);

printf("%s\n",str2);

printf("%s\n",str3);

}运行结果:

 

\

 

六 字符串的长度字符串长度计算的函数strlen,使用该函数需要引入头文件string.h特别注意\0为终止符的情况,长度只计算到终止符的位置。也就是说,只计算你能通过printf方法打印出来的,有效的字符串的长度。eg:#include "stdio.h"

/* 引入头文件string.h*/

#include "string.h"

void main() {

char str[] = {"hello,world"};

int a = 0;

/* strlen的使用 */

a = strlen(str);

printf("a=%d\n",a);

}

运行结果:

 

\

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网