C语言字符串详讲(初学者看这里~)

文章介绍了C语言中字符串的基本概念,包括通过字符数组和字符指针的初始化方法,如逐个字符、双引号、字符串常量和使用strcpy函数。字符串是字符数组的特殊形式,以空字符结尾。文章还提到了一些常用的字符串处理函数,如strcpy、strcat和strlen,并强调了遵循以空字符结尾的约定和防止缓冲区溢出的重要性。
摘要由CSDN通过智能技术生成

字符串的介绍

       在 C 语言中,字符串是一串字符的序列,以空字符 \0 结尾。字符串是使用字符数组或字符指针来表示的,常用于表示和处理文本数据。

字符串的初始化

方式1:一个接一个(最麻烦的方式!)


    char str[30] = { 'I',' ','l','o','v','e',' ','C','\0' }; 或 char str[] = { 'I','l','o','v','e','C','\0' };

提示:若是初始化字符数组,则去掉末尾的'\0'
 

方式2:双引号(常用!)


    char str[20] = "I love C";  或 char str[] = "I love C";

提示:这里的str既是字符数组,也是字符串。因编译器会自动在字符数组的最后一个  元素后面添加空字符终止符 \0

方式3:使用字符串常量初始化字符指针


    const char* str = "I love C";
注意:在VS2022中如果使用 char* str = "I love C";需在开头加const

否则会报错显示:const char *" 类型的值不能用于初始化 "char *" 类型的实体

 方式4:字符串拷贝函数


    char str[20];
    strcpy(str, "Hello, World!");   

提示:函数strcpy的头文件为:<string.h>

字符数组和字符串之间的区别

数据类型

字符数组是一种数据类型,用于存储一系列字符的连续内存空间。它可以包含任意类型的字符,包括字母、数字、符号等。
字符串是字符数组的一种特殊形式,以空字符 \0 结尾的字符数组。它是一串字符序列,通常用于表示文本。


表示方式

字符数组可以通过声明一个具有固定大小的字符数组变量来定义,如 char arr[10];。
字符串可以使用字符数组或字符指针来表示,如 char str[10] = "Hello"; 或 char *str = "Hello";。
初始化和赋值:

字符数组可以通过逐个字符赋值或使用字符串常量进行初始化。
字符串可以通过直接将字符串常量赋值给字符数组或字符指针进行初始化。


结束标志

字符数组不一定需要以空字符结尾,可以包含任意数量的字符。
字符串必须以空字符结尾,表示字符串的结束。


字符串处理函数

字符数组可以进行各种操作,例如逐个访问、修改、拷贝等。但是,某些字符串处理函数可能要求字符串以空字符结尾,以便正确处理字符串。
字符串是字符串处理函数的常见输入和输出,它们提供了一些方便的函数来处理字符串,例如打印、比较、连接、查找等。
需要注意的是,虽然字符串可以用字符数组来表示,但字符数组不一定是字符串。在处理字符串时,需要遵循以空字符结尾的约定,并使用适当的字符串处理函数来确保正确的字符串操作。

常用的字符串函数

strcpy(s1, s2);
复制字符串 s2 到字符串 s1。

strcat(s1, s2);
连接字符串 s2 到字符串 s1 的末尾。

strlen(s1);
返回字符串 s1 的长度,一个汉字字符串结尾的标志'\0'不计入哦~

strcmp(s1, s2);
如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 

字符串的操作和访问

可以通过索引或指针来访问字符串中的单个字符。

例如:char ch = str[0]; 或  char ch = *(str + 2)

注意事项

需要注意的是,为了保证字符串操作的正确性,在使用字符串时应遵循以下约定:

  • 字符串以空字符 \0 结尾来表示字符串的结束。(再次强调!)
  • 字符数组的大小应足够容纳字符串及其终止符 \0,以避免缓冲区溢出。
  • 字符串常量(例如:"Hello")是不可修改的,因为它们被存储在只读内存中。
  • 字符串是不可变的,也就是说,不能直接修改字符串中的单个字符。如果需要修改字符串,可以使用字符数组,并进行逐个字符的赋值操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DawnC_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值