欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-11-05 11:11:52
一 字符数组定义和初始化 字符串在c语言中是一种常用的数值对象,用于表示若干个字符的集合。 先了解第一个关于字符的知识点,字符数组的使用,字符数组顾名思义就是元素为字符的数组, 用于存储char数据...

一 字符数组定义和初始化

字符串在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程序运行结果:

 

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

 

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"字符串常量的在内存中的存储区域如下:

 

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

 

定义字符数组:

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

 

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

 

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

void main() {

printf("hello\0world");

}运行结果:

 

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

 

从运行结果可以看出,理论上应该把输出函数中双引号内容都输出,可是只输出了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);

}

运行结果:

 

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

 

注:字符串变量在内存中以一维数组的形式存放。五 格式化输入和输出字符串输入:通过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);

}运行结果:

 

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

 

六 字符串的长度字符串长度计算的函数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);

}

运行结果:

 

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