C语言字符串替换:字符,字符串,字符数组详解

这篇文章主要介绍了C++字符串替换的字符,字符串,字符数组,需要考虑的情况比较全面,有不错的借鉴价值,需要的朋友可以参考下

案例描述

字符串替换是处理字符串时最常见的操作之一,也是学习字符串必须掌握的知识。本案例要求通过编程实现字符串“Good moring”到“Good evening”的转换。

案例分析

我们需要从字符串中被替换的位置开始,将要替换的内容逐个复制到原字符串中,直到字符串结束或者替换的字符串结束为止。

为了顺利完成案例,需要先学习字符数组,字符串,字符指针等基础知识。

必备知识

1,字符数组

字符数组是存放字符数据的数组,其中每一个元素都是单个字符

(1)字符数组的定义

字符数组定义的语法格式如下:

 char 数组名[常量表达式]; char 数组名[常量表达式1][常量表达式2] 

在上述语法中,分别列举了定义一维字符数组和二维字符数组的方法。

示例代码如下:

 char ch[6]; 

(2)字符数组的初始化

在数组定义的同时也可以对数组中的元素进行赋值,这个过程称为数组的初始化,示例代码如下:

 char c[5] = {'h','e','l','l','o'}; 

注意

字符数组的初始化很简单,但要注意以下几点。

(1)元素个数不能多于字符数组的大小,否则编译器会出错

(2)如果初始项少于数组长度,则空余元素均会被赋值为空字符(‘\0')

(3)如果没有指定数组大小,则编译器会根据初始项的个数为数组分配长度

(4)也可以初始化二维数组

(和整型数组基本一致)

2,字符串概念

(1)字符串的概念

字符串是由数字、字母、下划线和空格等各种字符组成的一串字符,是个常量,字符串的末尾都默认有一个'\0'作为结束符。

"abcde"
"     "

上面这两行都是字符串,只不过第二个字符串中的字符都是空格

字符串在各种编程语言中都是非常重要的数据类型,但是C语言中没有字符串的固定类型,通常用字符数组的形式来存储和处理字符串,这种字符数组必须以'\0'结尾。当把一个字符串存入一个字符数组时,也应把结束符存入数组,因此该字符数组的长度是实际字符数加一。

(2)用字符初始化字符数组

为了便于对字符数组进行初始化操作,可以直接使用一个字符串常量来为另一个字符数组赋值,具体实例如下:

 char char_array[6] = {"hello"}; char char_array[] = {"hello"}; 

(3)获取字符串的长度

字符串用数组来存储,用sizeof运算符来求取各种数据类型的长度,sizeof运算符也可以用来求字符串的长度,例如sizeof(“abcde”)。

除了可以使用sizeof运算符外,还可以使用strlen()函数来获取字符串长度,strlen()函数原型如下:

 unsigned int strlen(char *s); 

其中s是指向字符串的指针,返回值是字符串的长度。需要注意的是,使用strlen()函数得到的字符串并不包括末尾的空字符'\0'。

sizeof运算符和strlen()函数在求字符串时是有所不同的

两者的区别具体如下:

1,sizeof是运算符,strlen()函数是C语言标准库函数,包含在string.h头文件里

2,sizeof运算符功能是获得所建立对象的字节大小,计算类型所占内存;strlen()函数是获得字符串所占内存的有效字节数。

3,sizeof运算符的参数可以是数组,指针,类型,对象和函数等;strlen()函数的参数必须是指向以'\0'结尾的字符串的指针

4,sizeof运算符计算大小在编译时就完成,因此不能用来计算动态分配内存的大小;strlen()函数结果要在运行时才能计算出来

注意

C语言中的字符串实际上是字符数组,而字符是一种基本数据类型,在字符和字符串之间进行转换是很容易的,接下来,将char a = ‘A'转化为字符串,具体步骤如下:

(1)创建一个长度为2的字符数组:

 char a_str[2]; 

(2)将第一个元素设置为对应的字符,第二个元素设置为空字符

 a_str[0] = a; a_str[1] = '\0'; 

同理将字符串转化为多个字符也很简单,具体示例如下:

 char a_str[] = "AB"; char a = a_atr[0]; char b = a_atr[1]; 

在上述代码中,定义了一个字符数组a_str[],该字符数组中保存的是字符串“AB”。只要将字符串的每个字符赋值给字符变量a,b,就可以完成字符串转化为字符的操作。

3,字符串与指针

在C语言中,字符型指针用char * 来定义,它不仅可以指向一个字符型常量,还可以指向一个字符串。为了描述字符串与指针之间的关系,示例代码如下:

 char char_array[] = "hello"; char* ch = char_array; 

以上代码,字符指针ch即指向字符‘h'又指向字符串“hello”:如果以“%c"输出,则只输出当前指针指向的字符;如果以“%s”输出,则会输出后面的连续内存空间的数据,直到遇到‘\0'为止。

4,字符数组与字符指针

字符数组与字符指针,也可以取数组地址赋值给字符型指针。字符数组与字符指针围绕字符串有千丝万缕的关系,接下来总结一下两者的区别与联系:

(1)存储方式

字符数组在用字符串初始化时,这个字符串就存放在了字符数组开辟的内存空间中;而字符指针变量在用字符串常量初始化时,指针变量中存储的是字符串的首地址,但字符串存储在常量区。

上面的文字比较晦涩,下面通过一段示例代码来辅助理解,具体如下:

 char str[6] = "hello"; char*p = "hello" 
<

以上就是C语言字符串替换:字符,字符串,字符数组详解的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » C语言