[C语言] 初始字符串

时间:2022-10-08 15:48:27

????write in front????   

????大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流????

????2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 星级博主~掘金⇿InfoQ~51CTOP创作者~周榜126﹣总榜886⇿全网访问量35w+????

????本文由 謓泽 原创 发布在51CTOP 如需转载还请通知⚠

????个人主页-​謓泽51Ctop的博客​????

????欢迎各位→点赞???? + 收藏⭐️ + 留言????

????系列专栏-​謓泽51Ctop的分类_51CTO博客​????

✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本????

[C语言] 初始字符串

字符串简介

"hello Cyuyan\n"

[C语言] 初始字符串

  • 这种由字符由双引号,引起来的一串字符被称之为字符串字面值,简称为:字符串 ????
  • 双引号不是字符串的一部分。双引号仅告知编译器它括起来的是字符串
  • 注:字符串的结束标志是一个反斜杠(\0)的转义字符。在计算机字符串长度的时候反斜杠(\0)是不算做字符串的内容当中的。
  • 说的简单一点的话:字符串就是一串字符,双引号括起来的一串字符
  • 双引号不是字符串的一部分。双引号仅告知编译器它括起来的是字符 串,正如单引号用于标识单个字符一样。

证明字符串当中有\0

  • 字符串是一串字符也就是多个字符,多个字符要存起来的话就需要用到一个概念是:字符数组 — 数组是一组相同类型的元素
  • 那么我们就来证明下在字符串数组当中的字符串是不是会存在反斜杠(\0)

char arr[] = "hello C";

[C语言] 初始字符串

[C语言] 初始字符串

[C语言] 初始字符串

从这里可以看出总共有⑦个元素,这里本来只有⑥个字符的。其实这里在字符当中隐藏当中存放了一个反斜杠\0,在上面图中可以看到最后有'\0'.总的来说就是:字符串在结尾的时候隐藏了一个'\0'.

反斜杠(\0)是字符串当中的结束标志!

两种形式区别

用代码给大家看看:如下实例:

#include<stdio.h>
int main(void){
char arr1[] = "helloC";
char arr2[] = { 'h', 'e', 'l', 'l', 'o', 'c' };

printf("arr1 = %s\n", arr1);
printf("arr2 = %s\n", arr2);

return 0;
}

首先:用调试当中监视窗口给大家看看区别!

[C语言] 初始字符串

不知道大家发现没有当我们是arr1数组的时候在最后当中是有反斜杠(\0),但是当我们在arr2数组的时候它是没有反斜杠(\0)的。

  • 其次:再运行结果给大家看看区别!

[C语言] 初始字符串

[C语言] 初始字符串

从这里我们打印的结果当中可以看出来是不一样的,第一种我们打印的时候只打印helloC,第二种的时候在打印的时候后面出现了乱码!那么为什么在第二种的时候会出现这个。在第一个arr1数组当中存放的内存当中存放了helloC\0,这就是我们arr1数组当中存放的内容。对于arr2数组里面的内容也是存放的内存块里面存放的是helloc,大家注意下我那个粗体字的区别。当我打印的时候arr1数组是因为后面有一个反斜杠(\0)让字符串停下来了,而arr2数组当中没有反斜杠(\0)后面放的是什么我们是完全不知道的。所以,后面空间的内容是未知的。对于未知的内容,那我们打印的内容自然是不知道的从而打印出来了乱码。而arr1数组当中有反斜杠(\0)的时候那么就知道要停下来了。

  • 那么当我们主动给这个arr2数组字符串+上反斜杠(\0)的时候大家来看看结果:
#include<stdio.h>

int main(void){
char arr1[] = "helloC";
char arr2[] = { 'h', 'e', 'l', 'l', 'o', 'c','\0'};

printf("arr1 = %s\n", arr1);
printf("arr2 = %s\n", arr2);
return 0;
}

运行结果: 

[C语言] 初始字符串

这个情况又再次充分的证明了字符串的结束标志是反斜杠(\0),对于字符串来说它的结束标志是非常重要的,好好利用这一点可以让你的程序效果更上一层楼。


strlen库函数 

strlen的作用是:计算字符串 str(要计算长度的字符串 的长度!

#include<string.h> 提供strlen()函数的原型。

string.h头文件包含多个与字符串相关的函数原型!

声明:size_t strlen(const char *str)

实际演示strlen()函数的用法 :

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

int main(void){
char str[50];

strcpy(str, "I always like C language");

int len = strlen(str);
printf("|%s| 的长度是:|%d|\n", str, len);

return(0);
}

[C语言] 初始字符串

  • 当上面的代码被编译和执行时,它会产生下列结果:

[C语言] 初始字符串

  • 在这里有strcpy的函数作用: 复制字符串????
  • 声明:char *strcpy(char *dest, const char *src)
  • dest​ – 指向用于存储复制内容的目标数组
  • src​ – 要复制的字符串
  • 注意:当我们用字符串函数求长度的时候反斜杠(\0)是不算长度的。

当然C语言还有大量的字符串函数,这个等以后会跟大家说的,现在我们知识初始即可!