我有一个char数组,并且我试图在该数组中使用具有相同chars的字符串文字。

我尝试了strcpy,然后尝试了=,然后尝试了以下代码中的操作。但这似乎不起作用,或者我正在理解某些内容。

char s1[10]="Youssef";
char *s2
while(*s2!='\0')
    *s2++=*s1++;
printf("%s",s2);


进程不返回。

最佳答案

字符串文字是只读的。

无论如何,您试图做的事情似乎使您感到困惑。

字符串文字:char *sl = "string literal";

未初始化的char指针:char *s2;

为了完成所需的复制,您首先需要为字符串分配内存。

此外,您不能对数组进行指针算术运算。数组和指针不是一回事!

此外,您还应该记住s2指针的起源,因为在将其递增直到复制完成之后,您将需要重置指针。 mystrcpy`)...

完整的例子:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
  char s1[10]="Youssef";
  char *s2 = malloc(sizeof(char) * (strlen(s1) + 1)); // +1 for the NULL-terminator
  int i = 0;
  char *origin_s2 = s2;
  while(s1[i] != '\0')
    *s2++ = s1[i++];
  *s2 = '\0';
  s2 = origin_s2;
  printf("%s\n", s2);
  return 0;
}


输出:


  优素福


PS:强烈建议检查内存的动态分配是否成功(检查malloc()的返回值是否不是NULL)。

07-24 09:45
查看更多