C语言:字符串处理函数 编写三个函数:求字符串长度函数,字符串复制函数,字符串比较函数。 要求:在主函数中根据用户需要调用不同的函数功能。

在<string.h>这个头文件内,就有着:strlen()求字符串长度函数,strcpy()字符串复制函数,strcmp()字符串比较函数,这里就要我们利用ASCII码来实现这三个操作。
首先我们设定一个指针数组来作为形参,将主函数内的字符数组进行传递.
然后确定返回值.
求字符串长度的代码如下:

int strlen(char *p)
{
int i;
for(i=0;p[i];i++);
return i;
}

这样返回值就是这个字符数组的长度了,但是里面有一点比较关键,就是for循环的条件表达式,p[i]在这里就相当于p[i]!=’\0’,这个和我们的strlen()库函数一样,不记录结束字符,但是用sizeof()算长度的时候会记录结束字符.
字符串复制函数的代码如下:

void strcpy(char *p1,char *p2)
{
int i;
for(i=0;p1[i];i++) 
p2[i]=p1[i];
p2[i]='\0';
}

字符串复制函数大家在平时的使用中或许都知道,这个不应该叫复制函数,应该称之为粘贴函数更为贴切,因为它是完全覆盖了原内容的.
字符串比较函数的代码如下:

int strcmp(char *p1,char *p2)
{
int i,j;
for(i=0;p1[i]||p2[i];i++)
{
j=p1[i]-p2[i];
if(j) 
break;
}
return j;
}

字符串比较函数会根据ASCII码依次比较p1和p2的每一个字符,直到出现不了字符,或者到达字符串末尾(’\0’)。
如果返回值<0,说明p1小于p2;
如果返回值>0,说明p1大于p2;
如果返回值=0,说明p1=p2;
上述是为了可以实现这三种功能而写的自定义库函数,但是这三种库函数本身在计算机内部来说其代码绝不会是这种,由于输入形式的多样性,这部分系统自带的库函数他们的容错率非常高,适于各种形式的输入.

猜你喜欢

转载自blog.csdn.net/RViewSonic/article/details/107158076