c语言中带复制字符串的分段错误

c语言中带复制字符串的分段错误,c,segmentation-fault,C,Segmentation Fault,下面的代码显示了一个分段错误。如何解决这个问题?代码有什么问题 #include <stdio.h> void stcp (char *, char *); int main () { char *s = "This is first string"; char *t = "string to be copied"; stcp (s, t); printf ("%s", s); getch (); } void stcp (char *s, char *t)

下面的代码显示了一个分段错误。如何解决这个问题?代码有什么问题

#include <stdio.h>

void stcp (char *, char *);

int
main ()
{
  char *s = "This is first string";
  char *t = "string to be copied";
  stcp (s, t);
  printf ("%s", s);
  getch ();
}

void
stcp (char *s, char *t)
{
  while ((*s++ = *t++) != '\0');

}
#包括
空stcp(字符*,字符*);
int
主要()
{
char*s=“这是第一个字符串”;
char*t=“要复制的字符串”;
stcp(s,t);
printf(“%s”,s);
getch();
}
无效的
stcp(字符*s,字符*t)
{
而((*s++=*t++)!='\0');
}

默认情况下,字符串文本为
const
。要使其为非常量,必须将其设置为数组:

char s[] = "this is my string";
char t[] = "another string";
#包括
无效stcp(字符*s,字符*t);
内部主(空)
{
int i;
char s[]=“这是第一个字符串”;
char t[]=“要复制的字符串”;
stcp(s,t);
printf(“%s\n”,s);
printf(“%s\n”,t);
//getch();
返回0;
}
void stcp(char*s,char*t)
{
int i;
对于(i=0;(s[i]!='\0')&(t[i]!='\0');i++){
printf(“%c%c\n”,s[i],t[i]);
s[i]=t[i];
}
s[i]='\0';
}

Ugh可能重复。这会被问多少次?从技术上讲,字符串文字不是常量(6.4.5(6)),如果试图修改它,它只是未定义的行为。
#include <stdio.h>

void stcp (char *s, char *t);

int main (void)
{
  int i;
  char s[] = "This is first string";
  char t[] = "string to be copied        ";
  stcp (s, t);
  printf ("%s\n", s);
  printf ("%s\n", t);
  //getch ();
  return 0;
}

void stcp (char *s, char *t)
{
  int i;
  for (i=0;  (s[i]  != '\0')  &&  (t[i] != '\0') ;i++) {
    printf("%c  %c\n",s[i],t[i]);
    s[i] = t[i];
  }
  s[i] ='\0';
}