C语言基础(二)

编程实现mystrcat函数

#include<stdio.h>
#include<stdlib.h>

char *mystrcat(char *str, const char *ptr)
{
    char *result;
    result = str;
    while(*str++);
    str--;
    while(*str++ = *ptr++);
    return result;
}

int main(void)
{
    char *a = NULL;
    char *b = "hello ";
    char *c = "world";

    a = (char *)malloc(256);
    *a = '\0';
    mystrcat(mystrcat(a, b), c);
    printf("a: %s\n",a);
    free(a);
    a = NULL;
    return 0;
}

编程实现mystrcmp函数
方法一:

#include<stdio.h>
#include<string.h>

int mystrcmp(const char *str, const char *ptr)
{
    int result = 0;
    while( !(result = *(unsigned char *)str - *(unsigned char *)ptr) && *ptr)
    {
        ++str;
        ++ptr;
    }
    if ( result < 0 )
        result = -1;
    else if ( result > 0 )
        result = 1;
    return (result);
}

int main()
{
    char a[10] = "1234567";
    char b[10] = "1234567";
    char c[10] = "12345678";
    char d[10] = "1234566";

    int test1 = mystrcmp(a, b);
    int test2 = mystrcmp(a, c);
    int test3 = mystrcmp(a, d);

    printf("test1 = %d\n",test1);
    printf("test2 = %d\n",test2);
    printf("test3 = %d\n",test3);
    return 0;
}
方法二:#include <stdio.h>

/*************************************************************************
    > File Name: mystrcat.c
    > Author: 浮生流年
    > Function List: main()  主函数
    > Created Time: 20180207日 星期三 09时4633**********************************************************************#include <stdio.h>

int mystrcmp(char a[], char b[])
{
    int t, i = 0;
    while (a[i] != '\0' || b[i] != '\0')
    {
    //若题目要求不区分大小写
        if (a[i] >= 'A' && a[i] <= 'Z')//不区分大小写
        a[i] += 32;
        if (b[i] >= 'A' && b[i] <= 'Z')//不区分大小写
        b[i] += 32;

        if (a[i] == b[i])
        t = 0;
        else if(a[i] < b[i])
        t = -1;
        else
        t = 1;
        if (t != 0)
        break;
        i++;
    }
    return t;
}

int main()
{
    char a[100], b[100];
    int t;
    scanf("%s", a);
    scanf("%s", b);

    t = mystrcmp(a, b);
    printf("%d\n", t);

    return 0;
}```

#include<stdio.h>

char *strcpy(char *str, const char *ptr)
{
    if((str == NULL) || (ptr == NULL))
    {
        return NULL;
    }
    char *strcopy = str;
    while ((*str++ = *ptr++) != '\0');
    return strcopy;
}

int getstrlen(const char *ptr)
{
    int len = 0;
    while(*ptr++ != '\0')
    {
        len++;
    }
    return len;
}

int main()
{
    char a[] = "hello world!";
    char b[20];
    int len = 0;

    len = getstrlen(strcpy(b,a));
    printf("b: %s\n",b);
    printf("Length of b: %d",len);

    return 0;
}

“`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值