5分钟快速上手字符串库函数(部分)

本文详细介绍了C/C++标准库中的字符串操作,包括strcpy、strncpy、strlen、strcat、strncat以及strcmp和strncmp的使用方法和示例,帮助理解字符串处理核心函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是字符串库函数

编写在编译器头文件库里,要包含头文件才能调用的封装函数,且是适合字符串使用的库函数。

字符串操作

①复制

strcmp(无长度限制)
格式:char * strcpy ( char * destination, const char * source );
将source的字符串拷贝到destination上
#include<string.h>
#include<stdio.h>
int main()
{
	char arr1[]="xxxxxxxxxx";
	char arr2[]={'b','i','t','\0'};
	strcpy(arr1,arr2);
	printf("%s\n",arr1);//结果 char arr1 为 bit
	return 0;
}
strncpy有长度限制,即可指定长度复制字符串)
格式:char * strncpy ( char * destination, const char * source, size_t num );
将source的字符串拷贝num个量到destination上
#include<string.h>
#include<stdio.h>
int main()
{
	char arr1[] = "xxxxxxxxxx";
	char arr2[] = { 'b','i','t','\0' };
	strncpy(arr1, arr2,2);//复制arr2的2个字符到arr1上
	printf("%s\n", arr1);//结果 char arr1 为 bixxxxxxxx
	return 0;
}

②计算字符串长度

strlen(遇到\0后终止计算)
格式:size_t strlen ( const char * str );
#include<string.h>
#include<stdio.h>
int main()
{
	char arr1[]="abcdef";
	int ret = strlen(arr1);
	printf("%d\n",ret);//结果为6
	return 0;
}

③增加

strcat
格式:char * strcat ( char * destination, const char * source );
读取destination字符串的 \0处,且记录该地址,后从\0后继续读取source字符串
#include<string.h>
#include<stdio.h>
int main()
{
	char arr1[20] = "Hello \0xxxxxx";
	char arr2[] = "优快云";
	strcat(arr1, arr2);
	printf("%s\n", arr1);//结果为 Hello 优快云
	return 0;
}
strncat(可指定长度)
格式:char * strncat ( char * destination, const char * source, size_t num );
读取destination字符串的 \0处,且记录该地址,后从\0后继续读取source字符串中num个字符
#include<string.h>
#include<stdio.h>
int main()
{
	char arr1[20] = "Hello \0xxxxxx";
	char arr2[] = "优快云";
	strcat(arr1, arr2,2);
	printf("%s\n", arr1);//结果为 Hello CS
	return 0;
}

④比较大小

strcmp(一个一个字符比对大小)
格式:int strcmp ( const char * str1, const char * str2 );
	str1 < str2时, 返回值 <0
	str1 = str2时,返回值 =0
	str1 > str2时,返回值 >0
#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[] = "abc";
	char arr2[] = "abc";
	int ret = strcmp(arr1, arr2);
	if (ret < 0)
		printf("arr1<arr2\n");
	else if (ret > 0)
		printf("arr1>arr2\n");
	else
		printf("arr1==arr2\n");
	printf("%d\n", ret);
	return 0;
}
strncmp
格式:int strncmp ( const char * str1, const char * str2, size_t num );
将str1与str2比较num个字符
#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[] = "abcdef";
	char arr2[] = "abcf";
	int ret = strncmp(arr1, arr2,4);
	if (ret < 0)
		printf("arr1<arr2\n");
	else if (ret > 0)
		printf("arr1>arr2\n");
	else
		printf("arr1==arr2\n");
	printf("%d\n", ret);//结果为arr2>arr1  比较到第四个字符时 f>d
	return 0;
}
查找

strstr

const char * strstr ( const char * str1, const char * str2 );
char * strstr ( char * str1, const char * str2 );
在str1中查找str2
不存在时返回NULL

int main()
{
	char arr1[] = "abcdefabcdef";
	char arr2[] = "cde";
	char* p = strstr(arr1, arr2);
	if (p == NULL)
	{
		printf("不存在\n");
	}
	else
	{
		printf("%s\n", p);
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值