在线编译器 C

#include <stdio.h> void my_strcat(char dst[], char src[]){ int m=0; int sum=0; while(dst[m]!='.'){ sum++; m++; } dst[sum]=src[0]; int t=0; while(dst[t]!='\0'){ printf("%c",dst[t]); } } int main() { char dst[1000]="abc.",src[1000]="bcd."; my_strcat(dst,src); return 0; }
这段代码试图实现一个字符串拼接函数,但存在几个关键问题。

首先,你的 `while` 循环条件 `dst[m]!='.'` 是在寻找句点字符,而不是字符串结束符 `\0`。这会导致拼接位置错误,因为字符串通常以 `\0` 结尾,而不是句点。

其次,在将 `src[0]` 放入 `dst[sum]` 后,你只复制了源字符串的第一个字符,而不是整个字符串。而且后面的 `while` 循环没有更新 `t` 的值,会变成死循环。

- 检查你的循环条件:字符串的结束标志是 `\0`,不是句点。你需要找到 `dst` 中 `\0` 的位置。
- 思考如何将 `src` 中的全部字符(直到 `\0`)逐个复制到 `dst` 的末尾,而不仅仅是第一个字符。