1

我用指针写了一个字符串复制程序,但是出现分段错误,不知道为什么。

谢谢

这是我的代码:

#include<stdio.h>

void strcp(char *s,char *t){
   while(*s++=*t++)
        ;
     }

void main(){
  char *d="this is destination";    
  char *s="this is source";  
  strcp(d,s);
  while(d++){
     printf("%s  " ,*d);
   }

    return;
  }
4

2 回答 2

1

d指向字符串文字,写入字符串文字是未定义的行为。您也可以定义d如下:

char d[]="this is destination"; 

您还需要printf从这里修复 and 循环:

while(d++){
  printf("%s  " ,*d);
}

对此:

printf("%s  " ,d);

你可以删除循环。最后,main应该总是返回一个int

int main()
于 2013-05-23T02:46:03.200 回答
0

即使你没有传入文字,如果 t 比 s 长,那么你的指针就会跑到最后。

于 2013-05-23T02:48:24.503 回答