在线编译器 C

#include <stdio.h> void my_strcat(char dst[], char src[]){ int m=0,n=0; while(src[m]!='\0'){ 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(n,answer); return 0; }
这段代码定义了一个函数 `my_strcat`,但它的行为并不是通常的字符串拼接。它从 `src` 中提取小写字母,存入 `dst`,然后打印 `dst`。在 `main` 中,`n` 被初始化为 `"abc.def."`,`answer` 是空数组,然后调用 `my_strcat(n, answer)`,但参数顺序是 `dst` 在前、`src` 在后,所以实际上是把 `answer`(空字符串)中的小写字母复制到 `n` 中,并打印 `n` 的内容。

- 注意函数参数的含义:`my_strcat(dst, src)` 中 `dst` 是目标数组,`src` 是源数组。在 `main` 中你传入了 `n` 作为 `dst`,`answer` 作为 `src`,但 `answer` 是空的,所以循环不会执行,`n` 的内容不会被改变,打印的仍是 `n` 原来的内容。检查参数顺序是否符合你的意图。

- 函数名 `my_strcat` 暗示拼接,但实际只复制了小写字母,且没有在 `dst` 末尾添加 `'\0'`。如果后续要正确使用 `dst` 作为字符串,需要确保它以空字符结尾。