修改bug
#include <stdio.h>#include <string.h>
void mystrcat(char *s1, char *s2, char *new_s)
{
int i = 0, j = 0,k = 0;
while (s1 != '\0'&& s2 != '\0')
{
new_s = s1;
k++;
new_s = s2;
k++;
i++;
j++;
}
while (s1 != '\0')
{
new_s = s1;
k++;
}
while (s2 != '\0')
{
new_s = s2;
k++;
}
new_s = '\0';
}
int main()
{
char *s1,*s2,new_s;
int char_len = strlen(s1)+strlen(s2);
char s1 = {0};
char s2 = {0};
printf("请输入两个字符串:\n");
scanf("%s %s",s1,s2);
mystrcat(s1, s2, new_s);
printf("连接后的字符串: %s\n", new_s);
return 0;
}
这段代码存在几个问题需要修改,下面是修正后的代码:
#include <stdio.h>
#include <string.h>
void mystrcat(const char *s1, const char *s2, char *new_s)
{
int i = 0, j = 0;
// 拷贝 s1 字符串到 new_s
while (*s1 != '\0')
{
new_s = *s1++;
}
// 拷贝 s2 字符串到 new_s
while (*s2 != '\0')
{
new_s = *s2++;
}
new_s = '\0'; // 添加字符串结束的空字符
}
int main()
{
char s1, s2, new_s; // 定义合适大小的字符串数组
printf("请输入两个字符串:\n");
scanf("%s %s", s1, s2);
mystrcat(s1, s2, new_s);
printf("连接后的字符串: %s\n", new_s);
return 0;
}
修正后的代码中,主要修改了以下几点:
1. 在注释掉的 `#include` 的前面添加了 `stdio.h` 和 `string.h`,用于包含相应的头文件。
2. 修改了 `mystrcat()` 函数的参数类型,将 `char *s1, char *s2, char *new_s` 修改为 `const char *s1, const char *s2, char *new_s`,并在函数中使用指针操作来进行字符串的拷贝。
3. 在 `main()` 函数中,将 `char *s1, *s2, new_s` 修改为 `char s1, s2, new_s`,定义了合适大小的字符串数组。
4. 修正了 `scanf()` 函数的参数,将 `s1` 和 `s2` 前面的 `&` 去掉,因为数组名本身就是指向其第一个元素的指针。
现在,你可以使用这段修正后的代码来实现字符串连接操作了。当输入两个字符串后,程序会输出它们的连接结果。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
页:
[1]