c语言有关字符串的问题

img


如图片上所描述,我想知道还有什么类似的函数满足要求,请具体举出示例。

这个题目的意思不是让你举例还有没有类似的函数,是让你自定义函数来实现上面的功能。需要的话我帮你写一下
(1)replace函数:
运行结果:

img

代码:

#include <stdio.h>

void replace(char* s1, int p, int n, char* s2);
int main()
{
    char s1[100] = "ABCDEFG";
    char s2[100] = "1234";
    replace(s1, 3, 2, s2);
    printf("%s\n", s1);
    return 0;
}

void replace(char* s1, int p, int n, char* s2)
{
    int i, len = 0, k; 
    char tmp[1000] = { 0 };
    //先将s1中的p-1+n位置的字符串备份
    for (i = p - 1 + n; s1[i] != '\0'; i++)
        tmp[len++] = s1[i];
    //将s2插入s1
    for (i = 0; s2[i] != '\0'; i++)
        s1[i + p - 1] = s2[i];
    k = i;
    //将tmp中的数据移动回去
    for (i = 0; i < len; i++)
        s1[p - 1 + k + i] = tmp[i];
    s1[p - 1 + k + i] = '\0';
}


(2)

img

代码:

#include <stdio.h>

void join(char* s1, char* s2);
int main()
{
    char s1[100] = "ABCD";
    char s2[100] = "*";
    join(s1, s2);
    printf("%s\n", s1);
    return 0;
}

void join(char* s1, char* s2)
{
    int i, j, k=0;
    char tmp[1000];
    for (i = 0; s1[i] != '\0'; i++)
    {
        tmp[k++] = s1[i];
        if (s1[i + 1] == '\0')
            break;
        for (j = 0; s2[j] != '\0'; j++)
            tmp[k++] = s2[j];
    }
    for (i = 0; i < k; i++)
        s1[i] = tmp[i];
    s1[i] = '\0';
}

(3)

img

代码:

#include <stdio.h>

void swapcase(char* s1);
int main()
{
    char s1[100] = "ABcd1234";
    swapcase(s1);
    printf("%s\n", s1);
    return 0;
}

void swapcase(char* s1)
{
    int i = 0;
    if (s1[i] >= 'A' && s1[i] <= 'Z')
        s1[i] = 'a' + (s1[i] - 'A');
    else if (s1[i] >= 'a' && s1[i] <= 'z')
        s1[i] = 'A' + (s1[i] - 'a');
}