【发布时间】:2015-12-27 18:21:15
【问题描述】:
我想在不使用 strcat() 函数的情况下连接两个字符串。但我没有得到所需的结果。请指出我的错误。
void main() {
char s1[100], s2[100];
int i;
puts("First string?");
gets(s1);
puts("Second string?");
gets(s2);
for (i = strlen(s1); i <= (strlen(s1) + strlen(s2)); i++) {
s1[i] = s2[i - strlen(s1)];
}
puts(s1);
}
【问题讨论】:
-
在调试器中逐行执行代码,应该很明显。也不要使用
gets,它自 C99 标准以来已过时,并在 C11 标准中被删除。 -
尽管有解决方案,但永远不要使用gets(手册页本身说明了这一点)。它不会检查缓冲区的边界,因此它非常不安全。
-
这是作业题吗?
-
我知道这是一个愚蠢的可怕错误。