C语言 为什么我得到一个分割错误在这个字符串复制程序



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

感谢下面是我的代码:
#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;
  }

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

char d[]="this is destination"; 

你还需要修复printf和循环从这:

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

:

printf("%s  " ,d);

,您可以删除循环。最后,main应该始终返回int:

int main()

即使你没有传递字面量,如果t比s长,那么你的指针就会偏离终点。

最新更新