C 分割错误出来了?
我试图在不使用strcat的情况下连接两个字符串,但遇到运行时错误。求求你,有人帮帮我 还有,这句话是不是C 分割错误出来了?,c,string,C,String,我试图在不使用strcat的情况下连接两个字符串,但遇到运行时错误。求求你,有人帮帮我 还有,这句话是不是q=q+len正确吗?我们可以给指针添加一个变量吗 #include<stdio.h> #include<string.h> void xstrcat(char*,char*); int main() { char source[]="folks"; char target[30]="hello"; xstrcat(target,source
q=q+len代码>正确吗?我们可以给指针添加一个变量吗
#include<stdio.h>
#include<string.h>
void xstrcat(char*,char*);
int main()
{
char source[]="folks";
char target[30]="hello";
xstrcat(target,source);
printf("%s",source);
printf("%s",target);
return 0;
}
void xstrcat(char*p,char*q)
{
int len=0;
len=strlen(q);
q=q+len;
while(*p!='\0')
{
*q=*p;
q++;
p++;
}
*q='\0';
}
#包括
#包括
void xstrcat(char*,char*);
int main()
{
char source[]=“people”;
字符目标[30]=“你好”;
xstrcat(目标、源);
printf(“%s”,来源);
printf(“%s”,目标);
返回0;
}
void xstrcat(char*p,char*q)
{
int len=0;
len=strlen(q);
q=q+len;
而(*p!='\0')
{
*q=*p;
q++;
p++;
}
*q='\0';
}
实现中的一些错误:
1-您正在访问随机内存。一旦字符串中没有/0
while(*p!='/0')
必须是:
while(*p!='\0')
请注意斜杠\
2-尝试将*p
添加到*q
时,您正在覆盖随机内存。您必须创建一个新变量,该变量必须有足够的空间来存储它们
同样,这个语句是q=q+len;对的我们可以给一个函数添加一个变量吗
指针
#include<stdio.h>
#include<string.h>
void xstrcat(char*,char*);
int main()
{
char source[]="folks";
char target[30]="hello";
xstrcat(target,source);
printf("%s",source);
printf("%s",target);
return 0;
}
void xstrcat(char*p,char*q)
{
int len=0;
len=strlen(q);
q=q+len;
while(*p!='\0')
{
*q=*p;
q++;
p++;
}
*q='\0';
}
对 您正在覆盖内存
您正在连接到源
,该源内存不足,无法容纳连接的字符
您可能需要反转源
和目标
的定义。
i、 e
或
调用xstrcat
asxstrcat(源、目标)代码>您将目标作为函数调用中的第一个参数传递,但函数似乎试图使用第二个参数作为目标。所以,也许您只需要在函数调用中切换参数的位置
另一件事是在转义空字符时使用斜杠而不是反斜杠。因此,将“/0”更改为“\0”
关于向指针添加int:在函数中,指针算法的类型是完全合法的。有几件事,首先,您需要检查\0
而不是/0
while(*p!='\0')
但是,您还试图将字符串添加到字符串文字中,这将导致未定义的行为。开关
xstrcat(target,source);
到
最后,xstrcat
中的最后一行应更改为
*q='\0';
问题出在下面一行的代码中:
xstrcat(target,source);
应该是
xstrcat(source,target);
或者在xstrcat函数中,尝试将第一个参数视为目标,第二个参数视为源。您应该将源添加到目标
,但似乎您正在以另一种方式进行。调试呢?你试过调试你的代码吗?您的代码包含一个明显的错误,调试会话会立即显示该错误。这不是一个“为我调试代码”的地方。另外,如果您不确定q=q+len
表达式的有效性,您为什么要在我们的代码中使用它。这是你的密码吗?
xstrcat(source,target);