用指针做函数参数自己编程实现字符串连接函数strcat()的功能。 下面程序中存在比较隐蔽的错误,请通过分析和调试程序,发现并改正程序中的错误。 注意:请将修改正确后的完整源程序拷贝粘贴到答题区内。 对于没有错误的语句,请不要修改,修改原本正确的语句也要扣分。 当且仅当错误全部改正,且程序运行结果调试正确,才给加5分。 经教师手工核对后,如果未用指针做函数参数编程,那么即使做对也不给分。 改错时不能改变程序原有的意图,不能改变函数原型。 #include <stdio.h> #define N = 80; void MyStrcat(char *dstStr, char *srcStr); main() { char s[N], t[N]; printf("Input a string:\n"); gets(s); printf("Input another string:\n"); gets(t); MyStrcat(s, t); printf("Concatenate results:%s\n", s); } void MyStrcat(char *dstStr, char *srcStr) { while (*srcStr != '\0'); { srcStr++; } while (*srcStr != '\0'); { *dstStr = *srcStr; srcStr++; dstStr++; } }
时间: 2024-01-11 15:03:56 浏览: 117
修改后的程序如下:
```
#include <stdio.h>
#define N 80
void MyStrcat(char *dstStr, char *srcStr);
int main() {
char s[N], t[N];
printf("Input a string:\n");
gets(s);
printf("Input another string:\n");
gets(t);
MyStrcat(s, t);
printf("Concatenate results:%s\n", s);
return 0;
}
void MyStrcat(char *dstStr, char *srcStr) {
while (*dstStr != '\0') {
dstStr++;
}
while (*srcStr != '\0') {
*dstStr = *srcStr;
srcStr++;
dstStr++;
}
*dstStr = '\0';
}
```
主要的问题在于MyStrcat函数中的两个while循环条件都写成了`*srcStr != '\0'`,导致源字符串并没有被复制到目标字符串中。同时,程序中定义N的方式也有误,应该是`#define N 80`。我们将第一个while循环的条件改为`*dstStr != '\0'`,第二个while循环的条件去掉多余的分号,并添加在循环结束后在目标字符串末尾添加'\0'。
阅读全文