gpt4 book ai didi

c - 如何将字符数组分配给字符串文字

转载 作者:行者123 更新时间:2023-11-30 19:02:37 26 4
gpt4 key购买 nike

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

我尝试了 strcpy,并尝试 =,并且尝试了在以下代码中所做的操作。但它似乎不起作用,或者我理解了一些东西。

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

进程没有返回。

最佳答案

字符串文字是只读的。

无论如何,您尝试做的事情似乎很困惑。

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

未初始化的字符指针: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;
}

输出:

Youssef

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

关于c - 如何将字符数组分配给字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55599230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com