首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将同一字符串存储在两种不同的结构类型中

将同一字符串存储在两种不同的结构类型中
EN

Stack Overflow用户
提问于 2019-03-15 03:23:38
回答 2查看 61关注 0票数 1

我正在处理结构,并且我需要在char数组中分配一个字符串。以下是我的代码中的一些具体部分:

代码语言:javascript
复制
typedef struct{
    int std_id;
    char std_name[STD_NAME_SIZE];
    double gpa;
    char courses[COURSE_SIZE];
}student_t;

typedef struct{
    int course_id;
    char course_name[COURSE_NAME_SIZE];
    char course_code[COURSE_CODE_SIZE];
    char course_acronym[COURSE_ACRONYM_SIZE];
    int quota;
}course_t;

这是我使用的结构。这是分配部分:

代码语言:javascript
复制
for(int i = 0; i < COURSE_SIZE; i++){
        printf("Enter course name: ");
        scanf("%s", &courseDetails.course_name);
        studentProfile.courses[i] = courseDetails.course_name;

    }

    for(int j = 0; j < COURSE_SIZE; j++){
        printf("\nYour %d course is: %s", j + 1, studentProfile.courses[j]);
    }

我认为问题出现在studentProfile.courses[i] = courseDetails.course_name部件上。我应该使用指针吗?我该如何解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2019-03-15 03:51:00

据推测,COURSE_SIZE被定义为学生可以选修的最大课程数量。然后在student_t结构中,courses将被声明为char courses[COURSE_SIZE][COURSE_NAME_SIZE],并被设置为strcpy(studentProfile.courses[i], courseDetails.course_name);,但这仍然不是正确的方法。您真正想要的是courses数组是一个包含多个过程的数组:

代码语言:javascript
复制
course_t *courses[COURSE_SIZE];

并将coursesi设置为指向某个课程j:

代码语言:javascript
复制
studentProfile.courses[i] = &courseDetails[j]; 

然后,如果你想引用该学生所选的第i门课程的名称,你可以使用courses[i]->course_name

请注意,在声明course_t结构之前,必须先声明student_t结构。

票数 0
EN

Stack Overflow用户

发布于 2019-03-15 03:37:15

由于您使用的是not using指针,因此您应该使用如下内容

代码语言:javascript
复制
strcpy(studentProfile.courses[i], courseDetails.course_name);

编辑:正如评论指出的那样,这显然是错误的。

也许您只是忘记了对另一个变量的数组访问,如

代码语言:javascript
复制
courseDetails.course_name[i]
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55170512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档