字符串连接(指针)
2022年 02月 23 日

BIGFISH

用指针做函数参数自己编程实现字符串连接函数strcat()的功能。
下面程序中存在比较隐蔽的错误,请通过分析和调试程序,发现并改正程序中的错误。
注意:请将修改正确后的完整源程序拷贝粘贴到答题区内。
对于没有错误的语句,请不要修改,修改原本正确的语句也要扣分。
当且仅当错误全部改正,且程序运行结果调试正确,才给加5分。
经教师手工核对后,如果未用指针做函数参数编程,那么即使做对也不给分。
改错时不能改变程序原有的意图,不能改变函数原型。
原代码:

#include <stdio.h>
#define N 80
void MyStrcat(char* dstStr, char* srcStr);
main()
{
char s[N] = {0}, t[N] = {0 };
printf("Input a string:\n");
gets(s);
printf ("%s",s);
printf("Input another string:\n");
gets(t);
MyStrcat(s, t);
printf("Concatenate results:%s\n", s);
}
void MyStrcat(char* dstStr, char* srcStr)
{
while (*dstStr != '\0');
{
printf("xxx%c\n", *dstStr);
dstStr++;
}
while (*srcStr != '\0');
{
*dstStr = *srcStr;
srcStr++;
dstStr++;
}
}

改错后代码:

#include <stdio.h>
int main()
{
char* k, * p;
char g[50] = { 0 };
char m[50] = { 0 };
int n = 0;
p = m;
k = g;
gets(k);
gets(m);
//printf("1");
//printf("%s", p);
while (*k != '\0')
{
//printf("%c", *k); k++;
}
printf("%s", g);
while (*p != '\0')
{
//printf("1");
// printf("%c", *p);
*k = *p;
p++; k++;
/**k = *p;
printf("%c", *k);
k++; p++;*/
}
printf("%s",g);
while (g[n] != '\0')
{
printf("%c\n", g[n]); n++; 
} 
return 0;
}

字符串连接(指针)

用指针做函数参数自己编程实现字符串连接函数strcat()的功能。
下面程序中存在比较隐蔽的错误,请通过分析和调试程序,发现并改正程序中的错误。
注意:请将修改正确后的完整源程序拷贝粘贴到答题区内。
对于没有错误的语句,请不要修改,修改原本正确的语句也要扣分。
当且仅当错误全部改正,且程序运行结果调试正确,才给加5分。
经教师手工核对后,如果未用指针做函数参数编程,那么即使做对也不给分。
改错时不能改变程序原有的意图,不能改变函数原型。
原代码:

#include <stdio.h>
#define N 80
void MyStrcat(char* dstStr, char* srcStr);
main()
{
char s[N] = {0}, t[N] = {0 };
printf("Input a string:\n");
gets(s);
printf ("%s",s);
printf("Input another string:\n");
gets(t);
MyStrcat(s, t);
printf("Concatenate results:%s\n", s);
}
void MyStrcat(char* dstStr, char* srcStr)
{
while (*dstStr != '\0');
{
printf("xxx%c\n", *dstStr);
dstStr++;
}
while (*srcStr != '\0');
{
*dstStr = *srcStr;
srcStr++;
dstStr++;
}
}

改错后代码:

#include <stdio.h>
int main()
{
char* k, * p;
char g[50] = { 0 };
char m[50] = { 0 };
int n = 0;
p = m;
k = g;
gets(k);
gets(m);
//printf("1");
//printf("%s", p);
while (*k != '\0')
{
//printf("%c", *k); k++;
}
printf("%s", g);
while (*p != '\0')
{
//printf("1");
// printf("%c", *p);
*k = *p;
p++; k++;
/**k = *p;
printf("%c", *k);
k++; p++;*/
}
printf("%s",g);
while (g[n] != '\0')
{
printf("%c\n", g[n]); n++; 
} 
return 0;
}

赞 (0)

猜您想看

评论区(暂无评论)

这里空空如也,快来评论吧~

我要评论