字符串的拼接--自定义函数

本文深入探讨了C语言中字符串处理的常用库函数及其应用,包括字符串长度计算、复制、复制有限字符、查找字符、查找子串、比较字符串、字符串连接等功能。同时介绍了常量指针与指针常量的概念及区别,以及如何正确使用它们进行字符串操作。并通过自定义字符串插入函数实例,展示了在特定条件下如何灵活地实现字符串插入操作。

 

关于字符串的库函数有许多,strlen(s):求s长度     ;  strcpy(t,s)将s内容复制到t中  ;strncpy(t,s,n)将s中前n个字符拷贝到t中,是strcpy()的扩展,

常用的用法为

 strncpy(t,s,sizeof(t)-1);

 t[sizeof(t)-1]='\0';

 char *strchr(char *str,char ch);在str中查找字符ch,如果有则返回ch在str中位置的指针,否则返回NULL;

char *strstr(char *str1,char *str2);在str1中查找str2(str2在str1中),如果找到则返回str2在str1中的地址,否则返回NULL;

int strcmp(char *str1,char str2);按ASCLL值比较str1与str2,如果相等则返回0,如果str1与str2第一个不相等的值,str1>str2,则返回大于0的数(不一定为1),否者返回小于0的数(不一定为-1,切记)。当比较到其中一个完时,则字符个数大为优,以此类推。

char *strcat(char *str1,const char *str2);将str2的内容插入到str1的末尾,并添加串结束标志‘\0’;

说明:1,str1 与 str2 所指向的不能为同一地址2、str1有足够的空间储存str2.

另外再说一下常量指针跟指针常量的区别,两者的定义分别如下:

int a;

常量指针:const int *p=&a;

指针常量:int const *p=&a;

常量指针是强调指针,它所指向的内容可以为常量,也可以为变量,但均不可通过该指针改变,但可以通过其他途径改变它所指向的内容。注意常量指针可以指向变量,但普通的指针不可以指向常量。

指针常量侧重常量,即指针是常量,不可改变指针本身的值。但对所指向的内容没有限制,可以为常量也可以为变量,可以改变,也可以不改。

另外还有指向常量的指针常量:

const int a;

const int * const p=&a;

这时,p为指针常量,且其所指向的内容为常量,两者都不能改。

 

下面是我自己写的字符串插入函数,代码如下:

//在s中的poi位置插入字符串t
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define Max 20
int Insert_string(char *s,int poi,char *t){
	int n=strlen(s),m=strlen(t),i;
	if(n==0){
		printf("原数组为空\n");
		return 0;
	}
	if(poi<0 || poi>n){
		printf("位置错误\n");
		return 0;
	}
	if(n+m<=Max){
		for(i=n+m-1;i>=poi+m;i--)
			s[i]=s[i-m];
		for(i=poi;i<poi+m;i++)
			s[i]=t[i-poi];
		return n+m;
	}
	else if(n+m>Max && poi+m<=Max){
		for(i=Max-1;i>=poi+m;i--)
			s[i]=s[i-m];
		for(i=poi;i<poi+m;i++)
			s[i]=t[i-poi];
		return Max;
	}
	else{
		for(i=poi;i<=Max-1;i++)
			s[i]=t[i-poi];
		return Max;
	}
}
		
		
	
int main()
{
	char s[Max+1];
	char t[Max+1];//随意数量
	while(scanf("%s%s",s,t)!=EOF){
		int m=Insert_string(s,0,t);
		for(int i=0;i<m;i++)
			printf("%c ",s[i]);
		printf("\n");
	}
	return 0;
}
	
		


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值