适合初学者的C语言字符串讲解

 更新时间:2022年04月09日 12:42:51   作者:每天都要学一点哦  
字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的

这一篇博客我们来了解一下字符串,看下面这个我们熟知的也是最先学习的代码

"Hello world!"

这一堆的字母就是字符串字面值,简称字符串,每一个字母都是一个字符,字符串需要用" "双引号来引起,字符需要用’ '单引号来引起,就像下面

"Hello world!"  //字符串
'a'  //字符
'!'  //字符

字符串也算常量,上面三条都算字面常量,之前的讲常量的时候就举过这种例子

那么字符串有什么用呢?

假设我们要把下面的字符串存起来,那么我们需要怎么存呢?

"abcdef"

我们可以把它放在字符串数组里,有两种形式如下:

#include<stdio.h>

int main()
{
char arr1[10]="abcdef";                     //形式一
char arr2[10]={'a','b','c','d','e','f'};    //形式二

//我们打印一下这些字符串
printf("%s\n",arr1);
printf("%s\n",arr2);

return 0;
}

运行的结果:

abcdef

abcdef

请添加图片描述

把"abcdef"都存在arr[ ]这个数组里面,[ ]里面数是多少,就能存多少字符

arr[10]可以存10个字符 ,但一定要不小于你要存的字符

你也可以不写[ ]里面的数字,它会自己根据你要存的字符串来调整,就像这样

#include<stdio.h>

int main()
{
char arr[]="abcdef";    //char-字符类型,没有字符串类型哦
return 0;
}

那这两种形式有什么区别呢?

我们不写arr[ ]里面的数字,我们来看一下

#include<stdio.h>

int main()
{
char arr1[]="abcdef";
char arr2[]={'a','b','c','d','e','f'};

//我们打印一下这些字符串
printf("%s\n",arr1);
printf("%s\n",arr2);

return 0;
}

运行的结果:

abcdef

abcdef烫烫烫烫烫abcdef

请添加图片描述

哎,发现没有,它们不一样了,那为什么会出现这种情况呢?

先想一个问题,它是根据什么来停止打印的?

(啊,你会问:它们后面啥都没有,我怎么会知道它们根据什么来停下来的)

那里确实看不见有什么标志,但是那个标志就是看不见的,字符串的结束标志是\0,它是一个我们马上就会学到的转义字符

char arr1[]="abcdef";

这个形式一,字符串后面就默认带了一个\0

char arr2[]={'a','b','c','d','e','f'};

这个形式二,后面没有\0

懂了吧,printf去打印的时候要识别到\0才会结束

第一个形式最后一个字符结束就识别到了\0,然后结束

第二个形式识别到最后的f,一直都没有识别到\0,就一直打印下去,最后就出现刚才的结果

那么如果我们给第二个形式加一个\0作为结束标志怎么样,不要光想,我们来做一下试试

#include<stdio.h>

int main()
{
char arr1[]="abcdef\0";   //我们也试一下给它也加一个\0
char arr2[]={'a','b','c','d','e','f','\0'};

//我们打印一下这些字符串
printf("%s\n",arr1);    //%s是打印字符串的
printf("%s\n",arr2);    //%s是打印字符串的
 
return 0;
}

运行的结果:

abcdef

abcdef

请添加图片描述

结果运行正常了

那么\0算不算里面的字符串长度的一部分呢?

又来介绍一个好东西,strlen,它可以计算一个字符串长度的函数,但是使用它还是跟以前一样,需要给另一个头文件string.h打一下招呼才能使用它,我们来实操一下:

#include<string.h>
#include<string.h>

int main()
{
	char a[] = "abc";
	char b[] = "abc\0";
	printf("%d", strlen(a));
	printf("%d", strlen(b));
	return 0;
}

运行结果:

3

3

请添加图片描述

"abc"

这个字符串的长度为3,所以我们可以知道看不见的\0并不算在长度里面的,就算在后面加上\0也是一样

大家可以试一试计算一下第二种形式不加\0情况下的字符串长度,保持好奇心,去自己尝试一下。

就这样,我们把"abcdef"这个数组储存起来了,那我们要使用里面的字符怎么办?我们还需要再了解一个知识:

调用arr里面字符,用arr[2]就可以调用c,用arr[0]就可以调用a,它们的对应关系也就是:

 a  b  c  d  e  f
 0  1  2  3  4  5

我们来实验一下

#include<stdio.h>

int main()
{
char arr[]="abcdef";
printf("%c",arr[2]);
return 0;
}

运行结果:

a

请添加图片描述

#include<stdio.h>

int main()
{
char arr[]="abcdef";
printf("%c",arr[0]);
return 0;
}

运行结果:

a

请添加图片描述

到此这篇关于适合初学者的C语言字符串讲解的文章就介绍到这了,更多相关C语言 字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#开源类库SimpleTCP使用方法

    C#开源类库SimpleTCP使用方法

    SimpleTCP内部有一个特殊字符分割字符串的协议可以直接使用,也可以在DataReceived事件处理程序中实现自己的协议,这篇文章主要介绍了C#开源类库SimpleTCP的使用方法,需要的朋友可以参考下
    2021-09-09
  • C++中的Reactor原理与实现

    C++中的Reactor原理与实现

    reactor设计模式是event-driven architecture的一种实现方式,处理多个客户端并发的向服务端请求服务的场景,每种服务在服务端可能由多个方法组成,这篇文章主要介绍了Reactor原理与实现,需要的朋友可以参考下
    2022-07-07
  • C++11中R字符串的作用小结

    C++11中R字符串的作用小结

    这篇文章主要介绍了C++11中R字符串的作用小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-07-07
  • C++ Qt实现动态增加垂直滚动条

    C++ Qt实现动态增加垂直滚动条

    本博文源于笔者正在工作的一个小内容,内容涉及到为qt动态增加垂直滚动条,文章分为三个部分,问题起源,问题解决方案,问题解决成功效果,思路清晰,文章干货满满,复制源码即可使用,需要的朋友可以参考下
    2023-08-08
  • C++中虚继承时的构造函数示例详解

    C++中虚继承时的构造函数示例详解

    在虚继承中,虚基类是由最终的派生类初始化的,换句话说,最终派生类的构造函数必须要调用虚基类的构造函数,这跟普通继承不同,在普通继承中,派生类构造函数中只能调用直接基类的构造函数,不能调用间接基类的,所以本文将通过代码示例给大家介绍一下C++虚继承构造函数
    2023-09-09
  • C++超详细分析type_traits

    C++超详细分析type_traits

    C++的type_traits是一套纯粹编译期的逻辑,可以进行一些类型判断、分支选择等,主要用于模板编程。使用type_traits并不难,但是我们希望能够更加深入了解其实现方式,与此同时,可以更进一步体验C++的模板编程
    2022-08-08
  • C语言数据结构中定位函数Index的使用方法

    C语言数据结构中定位函数Index的使用方法

    这篇文章主要介绍了C语言数据结构中定位函数Index的使用方法的相关资料,希望通过本文能帮助到大家,让大家理解这部分内容,需要的朋友可以参考下
    2017-10-10
  • 一文带你学习C++中的虚函数

    一文带你学习C++中的虚函数

    C++中的虚函数是一种非常重要的概念,它允许一个子类重写基类的方法,并确保在调用基类指针或引用的方法时,调用正确的子类方法,本文将介绍C++虚函数的基本概念、语法、使用及其示例,需要的朋友可以参考下
    2023-05-05
  • VScode编译C++ 头文件显示not found的问题

    VScode编译C++ 头文件显示not found的问题

    这篇文章主要介绍了VScode编译C++ 头文件显示not found的问题,本文给大家分享问题解决方法,通过截图的形式给大家介绍的非常详细,需要的朋友可以参考下
    2020-03-03
  • C语言素数(质数)判断的3种方法举例

    C语言素数(质数)判断的3种方法举例

    这篇文章主要给大家介绍了关于C语言素数(质数)判断的3种方法,质数是只能被1或者自身整除的自然数(不包括1),称为质数,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11

最新评论