初识C语言 DAY10 【字符串介绍和字符串处理函数介绍】


前言

本文章总结于此视频

一.字符串介绍:

字符串常量:“AAAA”
字符数组的几种写法:
初识化字符的每个元素

char str1[10] = {'1','2','3','\0'};

可以不写元素个数,编译器会自己计算

char str2[] = {'1','2','3','\0'};

使用字符串常量初识化字符数组

char str3[] = {"AAAA"};

使用字符串常量初识化字符数组,可以去掉大括号。

char str3[] = "AAAA";

二、字符串处理函数介绍:

获取字符串长度:strlen函数

这里是引用

strlen函数(string length)的作用是用于返回字符串结束标志‘\0’之前出现的字符个数,
因此,strlen函数处理的字符串对象必须是以结束标志‘\0’结尾的字符串。其返回值类型是size_t类型,也就是无符号类型。


strlen函数就表示字符串中字符的个数,但不包含’\0’
sizeof 会包括

#define _CRT_SECURE_NO_WARNINGS
#include<stdbool.h>
#include <stdio.h>
#include <string.h>
int main()
{
	char str1[] = "AAAAA";
	printf("sizeof str = %d\n", sizeof(str1));
	printf("strlen str = %d", strlen(str1));
	return 0;
}

运行如下:
在这里插入图片描述

拷贝字符串:strcpy函数在这里插入图片描述

这里是引用

  1. strcpy函数(string copy)的作用是:可以将字符串从源地址复制到目的地址,通俗来讲就是用来实现字符串的复制和拷贝。
  2. 并且它会将源地址内的结束标志‘\0’一并拷贝过去,因此源地址必须以‘\0’一并拷贝过去,因此源地址必须以‘\0’结尾,且目的地址也将以结束标识符结尾 。
  3. 而且,因为其作用拷贝字符串,因此目标地址的空间必须足够大,必须有足够大的空间容纳下源地址内字符串,同时目的地址的空间必须是可变的,可修改的。VS编译时,如果空间不足还是可以正常输出,但是会有栈区破坏的警告
    ————————————————————
#define _CRT_SECURE_NO_WARNINGS
#include<stdbool.h>
#include <stdio.h>
#include <string.h>
int main()
{
	char str1[] = "HELO WORLD";
	char str2[] = "HEHE";
	char str3[100];
	strcpy(str1, str2);
	strcpy(str3, " AAAAA");
	printf("str1:%s\n", str1);
	printf("str2:%s\n", str2);
	printf("str3:%s\n", str3);
	return 0;
}

在这里插入图片描述

拷贝字符串:strncpy

其与strcpy的区别就是拷贝时不会拷贝\0,要自己设置

char str[n] = '\0';

正确代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdbool.h>
#include <stdio.h>
#include <string.h>
int main()
{
	char str1[] = "TO be or not to be";
	char str2[40];
	strncpy(str2, str1, 5);
	str2[5] = '\0';
	printf("str2: % s\n", str2);
	return 0;
}

在这里插入图片描述
当不写’\0‘,时就会报错:

#define _CRT_SECURE_NO_WARNINGS
#include<stdbool.h>
#include <stdio.h>
#include <string.h>
int main()
{
	char str1[] = "TO be or not to be";
	char str2[40];
	strncpy(str2, str1, 5);

	printf("str2: % s\n", str2);
	return 0;
}

在这里插入图片描述

strcmp函数

这里是引用

1.trcmp函数(string compare)的作用是:按照顺序依次比较两字符串对应位置字符的ASCII码值(注意不是比较两字符串的长度哦),直到结束标识符‘\0’或对应位置的字符不同。
2.若比较到结束标识符都没有不同则字符串相等,若两字符串对应位置字符有不同,谁的ASCII码值小,那个ASCII码值小的字符比较小。
————————————————————————————
以下为举例:

#define _CRT_SECURE_NO_WARNINGS
#include<stdbool.h>
#include <stdio.h>
#include <string.h>
int main()
{
	char str1[] = "AAAAA";
	char str2[] = "AAAAA";
	if (!strcmp(str1, str2))
	{
		printf("两个字符串完全一致!");
	}
	else
	{
		printf("两个字符串不完全一致!");
	}
	return 0;
}

在这里插入图片描述

#define _CRT_SECURE_NO_WARNINGS
#include<stdbool.h>
#include <stdio.h>
#include <string.h>
int main()
{
	char str1[] = "AAAAA";
	char str2[] = "aaaaa";
	if (!strcmp(str1, str2))
	{
		printf("两个字符串完全一致!");
	}
	else
	{
		printf("两个字符串不完全一致!");
	}
	return 0;
}

在这里插入图片描述

如果您发现文章有错误请与我留言,感谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

马职音人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值