簡體   English   中英

很難打印具有功能的struct成員

[英]Hard time printing struct members with a function

我是C的新手,我正在研究這個基礎項目,以幫助我解決問題...所以,如果我的代碼仍然看起來有點愚蠢,請耐心等待。

話雖這么說,我在使用函數來打印struct成員時遇到了麻煩。 我已經創建了一個注冊書籍詳細信息的功能和一個用於打印所述詳細信息的單獨功能。

如果我在registerBook函數中打印細節,它們將被正確打印。

但是,當我調用printBook方法時,我得到的只是“垃圾”。 而且它總是相同的角色,

代碼如下:


#include <stdio.h>
#include <stdlib.h>

struct Books {
    char title[30];
    char author[20];
    int book_id[10];
    char subject[50];
} Books;

int main() {

    struct Books Book1;
    struct Books Book2;

    registerBook(Book1);
    printBook(Book1);
    registerBook(Book2);
    printBook(Book2);

    int exit = 0;
    while(exit == 0) {
        scanf("%p", exit);
    }

    return 0;
}

void printBook(struct Books a){
    printf("\nTitle: %s", a.title);
    printf("\nAuthor: %s", a.author);
    printf("\nISBN: %d", a.book_id);
    printf("\nSubject: %s", a.subject);
}

void registerBook(struct Books a){
    printf("\nTitle?");
    scanf("%s", &a.title);
    printf("\nAuthor?");
    scanf("%s", &a.author);
    printf("\nISBN?");
    scanf("%d", &a.book_id);
    printf("\nSubject?");
    scanf("%s", &a.subject);
}

我得到的只是:


標題?一個

作者•兩個

ISBN?3

主題•四

標題:ç作者:`ISBN:6356340主題:Ç@ Title?五

作者?6

ISBN?7

主題?8

標題:&Ý= w?¬8w?Ý=wÃÊpï作者:ISBN:6356340主題:


有人可以建議嗎?

在registerBook函數中,您應該通過引用而不是值傳遞參數,以便在函數結束后保留​​更改。

#include <stdio.h>
#include <stdlib.h>

struct Books {
    char title[30];
    char author[20];
    int book_id;
    char subject[50];
} Books;

void printBook(struct Books a){
    printf("\nTitle: %s", a.title);
    printf("\nAuthor: %s", a.author);
    printf("\nISBN: %d", a.book_id);
    printf("\nSubject: %s", a.subject);
}

void registerBook(struct Books* a){
    printf("\nTitle?");
    scanf(" %s", a->title);
    printf("\nAuthor?");
    scanf(" %s", a->author);
    printf("\nISBN?");
    scanf(" %d", &a->book_id);
    printf("\nSubject?");
    scanf(" %s", a->subject);
}



int main() {

    struct Books Book1;
    struct Books Book2;

    registerBook(&Book1);
    printBook(Book1);
    registerBook(&Book2);
    printBook(Book2);


    return 0;
}

我沒有包含你的退出循環,因為它與你的問題無關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM