解答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();
}
为什么这个代码会无法运行,高手解答,修改一下,指点,谢谢,急啊!!
#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