解答C语言,急急急!!!

来源:百度知道 编辑:UC知道 时间:2024/05/23 11:21:57
是这样一道题,将两个串连接,
#include<stdio.h>
#include<conio.h>
#include<alloc.h>
#pragma hdrstop
#include<string.h>
void func(char *A,char *B)
{
int i=0,j=0,k,m,n;
char *C;

while(1)
{ if(*(A+i)==0) break;
i++;
}

while(1)
{ if(*(B+j)==0) break;
j++;
}
k=i+j;
C=(char *)malloc(sizeof(char)*k);

for(m=0;m<=i;m++)
*(C+m)=*(A+m);
for(n=0;n<=j;n++)
*(C+i+n)=*(B+n);
*(C+k)='\0';
for(i=0;i<=k;i++)
printf("%s",*(C+i));
free(C);
}

main()
{
char *A,*B;
A="abcde";
B="abcde";
func(A,B);
getch();

}
为什么这个代码会无法运行,高手解答,修改一下,指点,谢谢,急啊!!

printf("%s",*(C+i));中的%s改为%c即可。还有#include<alloc.h>应为#include<malloc.h>。C=(char *)malloc(sizeof(char)*k);应多分配一位即为C=(char *)malloc(sizeof(char)*k+1);否则在释放内存时会出现运行时错误。

#include <iostream.h>
#include <assert.h>
int strlen(const char* str)
{
assert(str!= NULL);
int len=0;
while((*str++)!='\0')
len++;
return len;
}

char* Strcat(char *str1,char *str2)
{
char* tempt=str1;
while(*str1!='\0')
{
str1++;
}

while(*str2!='\0')
{
*str1 = *str2;
str1++;
str2++;
}

*str1 = '\0';
return tempt;
}

void main()
{
char a[20];
char b[20];
cin>>a;
cin>>b;
cout<<strlen(a)<<'\n'<<strlen(b)<<endl;
cout<<Strcat(a,b)<<endl