标签:自定义 int void C语言 char ++ udf 字符串 处理函数
自定义字符串处理函数,函数原型如下:
- 求字符串的长度:int udf_strlen(char s[]);
- 两个字符串拼接(将字符串t拼接到字符串s之后):void udf_strcat(char s[],char t[]);
- 字符串拷贝(将字符串t拷贝到字符串s中):void udf_strcpy(char s[],char t[]);
- 字符串比较大小(相等返回0,小于返回-1,大于返回1):int udf_strcmp(char s[],char t[]);
- 求字符串的子串(求字符串s中从指定位置startpos开始截取长度为length的子串,存入字符数组t中并返回):void udf_substr(char s[],char t[],int startpos,int length);
#include<stdio.h>
int udf_strlen(char s[]);
void udf_strcat(char s[],char t[]);
void udf_strcpy(char s[],char t[]);
int udf_strcmp(char s[],char t[]);
void udf_substr(char s[],char t[],int idx1,int idx2);//此处没有按照题目的设置,采用起始下标和结束下标截出字串
int udf_strlen(char s[])
{
int i;
for(i=0;s[i]!='\0';i++);
return i;
}
//将字符串t拼接到字符串s之后
//s长度不够时会导致越界!
void udf_strcat(char s[],char t[])
{
for(;*s!='\0';s++);
do
{
*(s++)=*(t++);//同时实现赋值和移动指针
}while(*(t-1)!='\0');
}
//将字符串t拷贝到字符串s中
void udf_strcpy(char s[],char t[])
{
do
{
*(s++)=*(t++);//同时实现赋值和移动指针
}while(*(t-1)!='\0');
}
//相等返回0,s小于t返回-1,s大于t返回1
int udf_strcmp(char s[],char t[])
{
int ret;
do
{
ret=*s-*t;
}while(!ret&&*(s++)!='\0'&&*(t++)!='\0');//循环继续的条件:之前比较的两个元素相同且字符串没有结束,同时实现移动指针
if(ret>0)return 1;
else if(ret<0)return -1;
else if(ret=0)return 0;
}
//idx1 和 idx2 分别是开始和结束元素的下标
void udf_substr(char s[],char t[],int idx1,int idx2)
{
int i,j;
for(i=idx1,j=0;i<=idx2;i++,j++)
{
t[j]=s[i];
}
t[j+1]='\0';
}
int main()
{
char a[7]={"d125"};
char b[6]={"d155"};
char t[10];
udf_substr(a,t,0,0);
// printf("%d",udf_strcmp(a,b));
// udf_strcat(b,a);
// udf_strcpy(b,a);
// printf("%s",b);
// printf("%d",b[3]);
// printf("%d",a[3]);
return 0;
}
标签:自定义,int,void,C语言,char,++,udf,字符串,处理函数 来源: https://blog.csdn.net/mirrorboat/article/details/121589815
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。