我有一個用於學校作業的兩個函數的代碼。我們剛剛瞭解了結構。兩個函數都必須將指針指向結構作爲參數。一個函數應該考慮用戶輸入來改變結構中的值,另一個函數應該打印出結構的內容。在我的第一個函數中,scanf或gets()不適用於我。我已經閱讀了書中的這一章,並且沒有運氣的課堂筆記。這裏是我的代碼:爲什麼scanf不會爲用戶輸入結構?
#include<stdio.h>
#include<stdlib.h>
struct Traveller {
int Ticket_ID;
char Destination;
float Price;
};
void CreateTicket(struct Traveller*);
void PrintTicket(struct Traveller*);
main() {
struct Traveller * str;
CreateTicket(str);
PrintTicket(str);
system("PAUSE");
return 0;
}
void CreateTicket(struct Traveller* ptr) {
printf("Please enter your ticket ID.\n");
scanf("%d", &ptr->Ticket_ID);
printf("\n\nPlease enter your destination.\n");
gets(ptr->Destination);
printf("\n\nPlease enter the price.\n");
scanf("%f", &ptr->Price);
}
void PrintTicket(struct Traveller* ptr) {
printf("\n\n%s\n", ptr->Ticket_ID);
printf("%s\n", ptr->Destination);
printf("%.2s\n", ptr->Price);
}
開啓編譯器警告。 –
試想一下你創建的變量是什麼。它是一個指向結構的指針,但它指向哪裏?你有沒有創建任何結構變量?也許你試圖通過引用傳遞一些東西;這是做到這一點的正確方法嗎? –