您的位置:首页 > 其它

读书笔记--C 指针实现各项字符串操作

2013-01-06 00:38 239 查看
#include <stdio.h>

/* strcpy函数:将指针指向的字符串复制到指针s指向的位置;使用指针方式实现的版本3 */
void strcpy( char *s,char *t)
{
while(*s++=*t++)
;
}

/* strlen函数:求字符串长度*/
int strlen(char *s)
{
int n;
for(n = 0;*s != '\0';s++)
n++;
return n;
}

/* strcmp函数:根据s按照字典顺序小于、等于或者大于t的结果分别返回负整数、0或正整数*/
int strcmp(char *s,char *t)
{
for(;*s == *t;s++, t++)
if(*s == '\0')
return 0;
return *s - *t;
}

/* strcat函数:将t指向的字符串复制到s指向的字符串尾部*/
void strcat(char *s,char *t)
{
while(*s)
s++;
/*
为什么不能写成 while(*s++)?
while(*s++)语句,当*s='\0'时,while语句判断循环条件是否为0,判断结束后,依然还是要执行*s++;所以当执行完while(*s++);后,*s指向'\0'的下一个位置。
*/
while(*s++ = *t++)
;
}

/* strncpy函数: 将t中最多前n个字符复制到s中,若t复制完,则s用'\0'结尾*/
void strncpy(char *s,char *t, int n)
{
while(*t && n-- > 0)
*s++ = *t++;
while(n-- > 0)
*s++ = '\0';
/*
while( n-- )
{
if(*t)
*s++ = *t++;
else
*s++ = '\0';
}
*/
}

/* strncat函数:从字符串t中最多复制n个字符到字符串s的尾部*/
void strncat(char *s,char *t,int n)
{
void strncpy(char *s,char *t,int n);
int strlen(char *);

strncpy(s + strlen(s),t,n);
}

/* strncmp函数:将字符串t和s前n个字符进行比较 */
int strncmp(char *s,char *t,int n)
{
for(; *s == *t; *s++,*t++)
if(*s == '\0' || --n <= 0)
return 0;
return *s - *t;
}

int main()
{
int n;
char a[15]="hello world!";
char b[15]="welcome!";
char *p=a,*q=b;

n = strncmp(p,q,2);

printf("%d \n",n);
return 0;
}


MARK 待补充..
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: