📜  C程序在不使用strcat的情况下连接两个字符串(1)

📅  最后修改于: 2023-12-03 15:00:13.034000             🧑  作者: Mango

C程序在不使用strcat的情况下连接两个字符串

在C语言中,如果我们需要将两个字符串连接起来,可以使用标准库函数strcat。但是,在某些情况下,我们可能需要不使用strcat来实现字符串的连接。本文将介绍在不使用strcat的情况下连接两个字符串的方法。

方法一:使用指针

我们可以通过指针操作来连接两个字符串。具体方式如下:

#include <stdio.h>

void concat(char *str1, char *str2)
{
    while (*str1)
        str1++;
    while (*str2)
        *str1++ = *str2++;
    *str1 = '\0';
}

int main()
{
    char str1[100] = "Hello ";
    char str2[] = "world!";
    concat(str1, str2);
    printf("%s\n", str1);

    return 0;
}

在上面的方法中,我们定义了concat函数,它接受两个指向字符的指针。我们先将第一个指针移动到字符串结尾,然后将第二个指针指向的字符一个一个拷贝到第一个指针所指向的位置,最后在第一个指针的结尾加上\0

然后在主函数中,我们定义了两个字符串str1str2,并将其传递给concat函数进行连接操作。最后输出连接后的字符串。

方法二:使用数组下标

我们也可以使用数组下标来连接两个字符串。具体方式如下:

#include <stdio.h>

void concat(char str1[], char str2[])
{
    int i, j;
    i = j = 0;

    while (str1[i] != '\0')
        i++;

    while (str2[j] != '\0')
    {
        str1[i] = str2[j];
        i++;
        j++;
    }
    str1[i] = '\0';
}

int main()
{
    char str1[100] = "Hello ";
    char str2[] = "world!";
    concat(str1, str2);
    printf("%s\n", str1);

    return 0;
}

在上面的方法中,我们定义了concat函数,它接受两个字符数组作为参数。我们先找到第一个字符数组的结尾,然后从第一个字符数组的结尾开始,将第二个字符数组的字符一个一个拷贝到第一个字符数组的末尾,最后在第一个字符数组的结尾加上\0

然后在主函数中,我们定义了两个字符数组str1str2,并将其传递给concat函数进行连接操作。最后输出连接后的字符串。

总结

在本文中,我们分别介绍了使用指针和数组下标来连接两个字符串的方法。当然,也可以使用其他方式来实现字符串的连接,例如使用动态内存分配等。在实际应用中,我们可以根据具体情况选择不同的方法来实现字符串的连接。