C语言常用字符串处理函数

C语言常用字符串处理函数

在我们的日常c语言编程中,对于字符串的处理,往往会出现不同种类的错误。其中,最常见的错误就是函数调用错误。这是因为我们对于字符串处理函数还没有真真地理解。下面,让我们来深刻理解这些函数的实现过程:

字符串的几种常用表示方法:

1.字符串常量

即:位于一对双括号中的任何字符。双引号里的字符加上编译器自动提供的结束标志\0字符,作为一个字符串存储在内存中。如:printf("%s",“hello”); //“hello”

2.字符串数组

char m[100] = “hello,world”; //定义字符串数组时必须指定数组大小(整型常量),在指定大小时,要确保数组的大小比预定的大一个,因为编译器会自动添加’\0’。
char m={‘h’,‘e’,‘l’,’\0’}; //注意标志结束的空字符,若没有它,得到的只是一个字符数组而不是字符串

3.利用char指针定义字符串

char *m = “hello,world”; //自动添加’\0’

lenght()的重写

常规方法
#include<stdio.h>
int Mystrlen();  //函数声明
int main()
{
	char str1[10]="12345678";
	printf("%d\n",Mystrlen(str1));
	return 0;
}
int Mystrlen(char str1[])
{
	int i=0;
	while(str1[i]!='\0')
	{	
		i++;
	}
	return i;
}
指针处理
#include<stdio.h>
int Mystrlen();
int main()
{
	char str1[10]="12345678";
	printf("%d\n",Mystrlen(str1));
	return 0;
}
int Mystrlen(char *str1)
{
	int count=0;
	while(*str1!='\0')
	{
		count++;
		str1++;
	}
	return count;
}
运行结果

在这里插入图片描述

strcat()的重写

常规方法
#include<stdio.h> 
#include<string.h>          
void Mystrcat();
int main()
{
	char str1[20]="123";
	char str2[5]="456";
	Mystrcat(str1,str2);
	printf("%s\n",str1);
	return 0;
}
void Mystrcat(char str1[],char str2[])//将字符串str2连接到str1,与要保证str1数组内存足够大。
{
	int i;
	int len1=strlen(str1);
	int len2=strlen(str2);
	for (i=0;i<len2;i++)
    {
        str1[len1+i] = str2[i];
    }
	str1[len1+i]='\0';
}
指针处理
#include<stdio.h>          
void Mystrcat();
int main()
{
	char str1[20]="123";
	char str2[5]="456";
	Mystrcat(str1,str2);
	printf("%s\n",str1);
	return 0;
}
void Mystrcat(char *str1,char *str2)//数组作为形参被传递,可以采用指针。
{
	while(*str1!='\0')
		str1++;
	while(*str1++=*str2++);
}
运行结果

在这里插入图片描述

strcmp()的重写·

常规方法
#include<stdio.h>
int Mystrcmp(char str1[],char str2[]);
int main()
{
	char str1[5]="abc";
	char str2[5]="abcd";
	printf("%d\n",Mystrcmp(str1,str2));
	return 0;
}
int Mystrcmp(char str1[],char str2[])
{
	int i=0;
	int sum=0;
	while(str1[i]!='\0' || str2[i]!='\0')
	{
		if(str1[i]==str2[i])
		{
			sum=0;
		}
		else
		{
			sum=str1[i]-str2[i];
			return ;
		}
		i++;
	}
	return sum;
}

指针处理
//指针操作
#include<stdio.h>        
int Mystrcmp();
int main()
{
	printf("%d\n",Mystrcmp("xyz","abc"));
	printf("%d\n",Mystrcmp("abc","abcd"));
	printf("%d\n",Mystrcmp("abc","xyz"));
	return 0;
}
int Mystrcmp(char *str1,char *str2)
{
	while(*str1==*str2 && *str1!='\0')
	{
		str1++;
		str2++;
	}
	return *str1-*str2;
}
运行结果

在这里插入图片描述

strcpy()的重写

常规方法
#include<stdio.h>
void Mystrcpy();
int main()
{
	char str1[7];
	char str2[5]="abc";
	Mystrcpy(str1,str2);
	printf("%s\n",str1);
	return 0;
}
void Mystrcpy(char str1[],char str2[])
{
	int i;
	for(i=0;str2[i]!='\0';i++)
	{
		str1[i]=str2[i];
	}
	str1[i]='\0';
}
指针处理
//指针操作
#include<stdio.h>        
int Mystrcmp();
int main()
{
	printf("%d\n",Mystrcmp("xyz","abc"));
	printf("%d\n",Mystrcmp("abc","abcd"));
	printf("%d\n",Mystrcmp("abc","xyz"));
	return 0;
}
int Mystrcmp(char *str1,char *str2)
{
	while(*str1==*str2 && *str1!='\0')
	{
		str1++;
		str2++;
	}
	return *str1-*str2;
}
运行结果

在这里插入图片描述

字符串知识总结:

1、c语言约定’\0’作为字符串的结束标志,它占用内存空间,但不计入串的长度。
2、在strcat()和strcopy()重写的常规方法,需要手动添加结尾标志’\0’。
3、在字符串数组作为形式参数表示时,可以用""+数组名,例如str。
4、字符串的输出格式为:%s。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值