在线编译器 C

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

函数 `my_strcat` 的意图是从源字符串 `src` 中提取小写字母,直到遇到第一个句点为止,然后将这些字母复制到目标数组 `dst` 中。但代码中使用了 `'.'` 作为循环终止条件,而不是字符串结束符 `'\0'`,这会导致问题。另外,函数没有在 `dst` 末尾添加字符串结束符 `'\0'`,所以 `answer` 数组的内容在 `main` 中无法被正确识别为字符串。

- 检查循环终止条件:字符串的结尾标志是 `'\0'`,而不是句点。如果源字符串中没有句点,循环会越界访问数组。
- 在复制完成后,需要在 `dst` 的末尾手动添加 `'\0'`,这样它才能被当作一个完整的字符串使用。