用指针实现库函数strncpy strncmp strncat

来源:互联网 发布:子宫肌瘤微创手术知乎 编辑:程序博客网 时间:2024/05/18 02:19
    #include <stdio.h>    #define MAX 1000    void strncat(char *s,char *t,int n);    int strncmp(char *s,char *t,int n);    void strncpy(char *s,char*t,int n);     int len(char *s);    int main(void)    {        char s[MAX],t[MAX];         int n;        printf("Please enter your string s : ");        gets(s);        printf("Please enter your string t : ");        gets(t);        printf("Please enter your number n : ");        scanf("%d",&n);        strncmp(s,t,n);    //  strncpy(s,t,n);    //  strncat(s,t,n);        printf("%d",strncmp(s,t,n));        return 0;    }    int len(char *s)    {        int i;        for(i=0;*s!='\0';s++,i++)        ;        return i;    }    void strncat(char*s,char*t,int n)    {        int i;        if(len(t)<n)          printf("The string t isn't long enough, we will paste the whole sting.\n");        for(;*s!='\0';s++); //移动到s的末端        for(i=0;i<n;i++ ,*s++=*t++)             ;        *s='\0'; //给s封尾         }    void strncpy(char *s,char *t,int n)    {        int i;        if(len(s)<n)          printf("The string s isn't long enough, Please enter your number n again.\n");        if(len(t)<n)          printf("The string t isn't long enough, we will copy the whole sting.\n");        for(i=0;i<n;*s++=*t++,i++)            ;    }     int strncmp(char *s,char *t,int n) //比较前s与t的前n个元素,返回第一个不相等字符处的字符的差值     {        int i;        if(len(s)<n)        printf("The string s isn't long enough, Please enter your number n again.\n");        if(len(t)<n)        printf("The string t isn't long enough, Please enter your number n again.\n");          for(i=0; i<n, *s==*t; s++,t++,i++);        return  *s-*t;     } 
0 0