各位大佬们,我想来问大家一个问题。
我写了这样的一串代码是编写函数实现字符串strcat的功能,但是最后运行结束后给我返回的值多了一个@值,请问各位大佬为什的会发生这样的情况,这段程序错在了哪里,谢谢大家啦?!!!
#include <stdio.h>
void fun(char *p, char *q);
main() {
char a[20], b[10];
int i;
gets(a);
gets(b);
fun(a, b);
puts(a);
}
void fun(char *p, char *q) {
int i;
while (*p++ != '\0') {
if (*p == '\0') {
for (i = 0; *q != '\0'; i++)
*(p + i) = *q++;
break;
}
}
}
没有正确的结束,在fun函数修改如下:
void fun(char *p, char *q) {
int i;
while (*p++ != '\0') {
if (*p == '\0') {
for (i = 0; *q != '\0'; i++)
*(p + i) = *q++;
*(p+i)=0; //添加这一句
break;
}
}
}
或者:
void fun(char *p, char *q)
{
int i;
while(*p!='\0')
p++;
while(*q!='\0')
{
*p = *q;
p++;
q++;
}
*p = 0;
}
修改如下:(你的代码应该是最后少了*(p+i)='\0';)
void fun(char *p, char *q) {
int i=0;
while (*p++ != '\0') ;
p--;
while(*q != '\0')
*p++ = *q++;
*p = '\0';
}
char a[20], b[10];
改为
char a[20]={'\0'}, b[10]={'\0'};