在 C 中实现 strcat() 函数

implement strcat() function in C

我试图在 C 中实现 strcat(),但一直坚持输出结果重复 src。

这是我的代码。


void my_strcat(char des[], char src[]) {
    int i = 0, j = 0;
    while (des[i] != '[=10=]')
        i += 1;
    while (src[j] != '[=10=]') {
        des[i + j] = src[j];
        j += 1;
    }
    des[i + j] = '[=10=]';

    printf("%s", des);
}

int main() {
   char des[1000], src[100];
   for(int i = 0; i < 2; ++i) {
        printf("src: ");
        scanf("%s", src);
        my_strcat(des, src);
    }
    
    printf("%s", des);

}

输出与我之前预期的不一样。例如:

来源:一个 来源:b des: aabb

你可能想要这个:

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

void my_strcat(char des[], const char src[]) {   // better use const her
  int i = 0, j = 0;
  while (des[i] != '[=10=]')
    i += 1;
  while (src[j] != '[=10=]') {
    des[i + j] = src[j];
    j += 1;
  }
  des[i + j] = '[=10=]';

  // printf("%s", des);  // dont print des here
}

int main() {
  char des[1000];
  char src[100];
  des[0] = 0;   // initialize des to a zero length string      
  for (int i = 0; i < 2; ++i) {
    printf("src: ");
    scanf("%s", src);
    my_strcat(des, src);
  }

  printf("%s", des);   // print the destination
}