gpt4 book ai didi

c - C中的字符串分配

转载 作者:行者123 更新时间:2023-12-04 20:41:55 25 4
gpt4 key购买 nike

我是C的新手。以下代码中的字符串分配有效:

#include<stdio.h>
int main(void){
char str[] = "string";
printf("%s\n",str);
}


但是即使在以下情况下也无法使用,即使我给 name[]指定了索引号:

#include <stdio.h>
int main(void){
struct student {
char name[10];
int salary;
};
struct student a;
a.name[10] = "Markson";
a.salary = 100;
printf("the name is %s\n",a.name);
return 0;
}


为什么会这样?

最佳答案

您不能分配给数组。两种解决方案:复制字符串:

strcpy(a.name, "Markson");


或使用const char指针而不是数组,然后可以简单地分配它:

struct {
const char *name;
/* etc. */
};

a.name = "Markson";


或者,如果您以后希望修改“名称”的内容,请使用非常量char指针:

struct {
char *name;
}

a.name = strdup("Markson");


(在后一种情况下,请不要忘记释放由strdup()分配的内存!)

关于c - C中的字符串分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11864410/

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