在结构中分配字符串指针

问题描述 投票:0回答:2

我正在学习C语言,对此有麻烦。它确实可以编译,但是结果出乎意料。在我的代码中,我有一个结构:

typedef struct {
    char *title[50];
    float price;
} Book;

主要是向用户询问他们希望在图书馆中拥有的书籍数量。然后让他们初始化每本书的属性。最后,使用Display功能将它们打印到终端。

void Display(Book* lib, int n);

int main() {
    int n;
    printf("Enter the number of books:\n" );
    scanf("%d", &n);
    if(n <= 0) {
        printf("Invalid number of book.");
        return 1;
    }

    Book *lib = (Book *) malloc(n * sizeof(Book));
    if(lib == NULL) {
        printf("The memory is full");
        return 1;
    }

    for(int i = 0; i < n; ++i) {
        char title[50];
        float price;
        printf("Book no.%d\n", i);
        printf("Book Title: ");
        scanf("%s", title);
        printf("Book Price: ");
        scanf("%f", &price);
        printf("\n");
        *(lib+i)->title = title;
        (lib+i)->price = price;
    }

    Display(lib, n);

    return 0;
}

代码成功编译,但是结果是这样的:

Enter the number of books:
2
Book no.0
Book Title: AAAA
Book Price: 1.0

Book no.1
Book Title: BBBB
Book Price: 9.9


----Displaying----
Book no.0
Book Title: BBBB
Book Price: $1.000000

Book no.1
Book Title: BBBB
Book Price: $9.900000

第一本书的标题是错误的,它是第二本书的标题。为什么会这样?我该如何解决?谢谢

编辑:我的分配条件之一是Book的标题必须为char*]类型>

Edit 2

:我现在有50个char类型的指针时意识到了我的错误。我应该如何解决?

我正在学习C语言,对此有麻烦。它确实可以编译,但是结果出乎意料。在我的代码中,我有一个结构:typedef struct {char * title [50];浮动价格; }书;在...

c pointers struct
2个回答
1
投票

在您的结构定义中:


0
投票

结构的数据成员title的声明


0
投票

如果必须使用指针,则需要使用动态分配。

© www.soinside.com 2019 - 2024. All rights reserved.