c语言中字符串的一些处理方法

一.c语言中字符串处理的头文件为<string.h>

1.strlen()计算字符串长度

size_t strlen(const char *str)

可以看出strlen()函数的返回值是size_t类型,其中size_t是typedef定义的无符号整数类型。

而这函数的参数为字符串的首地址。

我们来简单的实现一下这个函数的过程

size_t my_strlen(const char* arr)
{
	char* p = arr;
	while (*p++)
		;
	return p - arr-1;
}

2.strcmp()字符串比较函数

int strcmp(const char *str1, const char *str2)

函数的参数为str1和str2的首地址,并将字符串逐个字符比较,若str1>str2则返回1,若str2<str2则返回-1,若str1与str2相同则返回0;

strncmp()可以比较前n个字符

int strncmp(const char *str1, const char *str2, size_t n)

3.strcpy()字符串拷贝函数

char *strcpy(char *dest, const char *src)

将字符串src中的内容拷贝到dest数组中;但这个函数有一个弊端就是不会检测数组越界,也就是说如果dest数组的大小小于src数组那么就会出错。

strncpy()拷贝前n个字符

char *strncpy(char *dest, const char *src, size_t n)

4.strcat()字符串拼接函数

char *strcat(char *dest, const char *src)

因为c语言中字符串必须是以"\0"结束,所以将src拼接到dest的结尾,只需要将src的首位接到dest的"\0"位置就完成了拼接,但是这个函数还是不会检测数组越界,也就是说如果dest数组不够大装不下src数组包括src的"\0",那么就会出错。

我们来简单的实现一下这个操作

char* my_strcat(char* dest, const char* src)
{
	char* p = dest;
	while (*p)
	{
		p++;
	}
	while (*p++ = *src++)
		;
	return dest;
}

strncat()拷贝src的前n个字符

char *strncpy(char *dest, const char *src, size_t n)

5.strchr()在字符串中查找某字符

char *strchr(const char *str, int c)

在字符串str中查找字符c,如果在字符串 str 中找到字符 c,则函数返回指向该字符的指针,如果未找到该字符则返回 NULL。

二.字符串数组

1.c语言中的字符串

因为c语言中没有专门的字符串类型,所以字符串只能依赖于字符数组存在。

因此一个字符串一般定义为

char arr[11]="HelloWorld";

然后字符串是默认在结尾加入"\0",因为字符串打印到"\0"时才结束。所以在处理字符数组时一定要检测是否越界。

2.c语言中的字符串数组

如何存取多个字符串,C语言中有两种方法,一是利用二维数组的方式来存取,二是通过指针数组

2.1 利用二维数组的方式来存取多个字符串

char arr[][10]={"hello","world"};

但是对于二维数组来存取字符串有一个弊端就是要固定好字符串的长度,如果有的字符串很长有点字符串很短就会造成资源浪费。并且通过二维数组来存取的字符串是在一个连续的地址空间。

2.2通过指针数组来存取多个字符串

char* arr[]={"hello","world"};

指针数组存地址,通过指针数组将每个字符串的地址存入数组中。通过这种方法可以解决二维数组的地址浪费。

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值