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

 

关于字符串的库函数有许多,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;
}
	
		


 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值