Как распечатать элементы структуры? - PullRequest
0 голосов
/ 10 июля 2020

Я сделал эту программу, чтобы сохранить информацию о книге, но она не распечатывает ее правильно. функция, в которой данные сохраняются, они печатают правильно. Но, модулируя программу, она перестает это делать.

1 Ответ

4 голосов
/ 10 июля 2020

C передается по значению, поэтому любые изменения, внесенные в параметр, являются локальными для функции. Если вы хотите изменить значение в вызывающей стороне, вам необходимо передать адрес. например:

#include <stdio.h>

enum Color {red, green, blue};
char *colornames[] = { "red", "green", "blue" };

struct Book {
    int pages;
    char *author;
    char *title;
    enum Color color;
};

void
getInfo(struct Book *book)
{
    book->pages= 200;
    book->author = "Cervantes";
    book->title= "El Quijote";
    book->color = green;
};

void
showInfo(const struct Book *book)
{
    printf("pages: %d\n", book->pages);
    printf("author: %s\n", book->author);
    printf("title: %s\n", book->title);
    printf("color: %s\n", colornames[book->color]);
}

int
main(void)
{
    struct Book book1;

    getInfo(&book1);
    showInfo(&book1);

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...