【真对的家50!绝对】C语言指针问题

来源:百度知道 编辑:UC知道 时间:2024/08/23 00:41:52
#include<stdio.h>
char *a(char *b)
{ char *fanhui;
int i=0;

while(b)
{

*(fanhui+i)=*(b+i);
i++;

}
return fanhui;

}
main()
{
char shuzu1[20],*shuzu2;
gets(shuzu1);
shuzu2=a(shuzu1);
puts(shuzu2);

}

目的:使其相当于复制功能。。。。反正谁能告诉我如何运行部出错就OK

fanhui 是指针,又没有赋初值。那么fanhui指向哪呢?
当执行*(fanhui+i)=*(b+i);时,就是fanhui+i所指的地方,指向哪是不知道的,你又要改变他的值,那么其结果只能是错了···。
偷用下别人的代码···
#include <stdio.h>
#include <malloc.h>
#include <string.h>

char *a(char *b,int length){
char *fanhui;
faihui=(char *)malloc(length,1);
int i=0;
while(*(b+i)!='\0'){
*(fanhui+i)=*(b+i);
i++;
}
*(fanhui+i)='\0';
return fanhui;
}

int main(){
char shuzu1[20],*shuzu2;
gets(shuzu1);
int length=strlen(shuzu1)+1;
shuzu2=a(shuzu1,length);
puts(shuzu2);
free(shuzu2);
return 0;
}

char *strcpy(char *strDest, const char *strSrc);
{
assert((strDest!=NULL) && (strSrc !=NULL));
char *address = strDest;
while( (*strDest++ = * strSrc++) != ‘\0’ ) ;
return address ;
}
标准库中字符串复制函数的定义,你可以参照以下。a函数中的fanhui指针是野指针,指针应该先赋值再使用。另外,定义标识符的习惯不太