我正在學習指標、結構和 AoS 以及它們之間的關系,我試圖制作一個簡單的 C 代碼,使用指標從用戶那里獲取輸入。但是,無論我嘗試什么,我都遇到了 Seg 錯誤,例如在代碼中:只要我嘗試輸入余額,代碼就會在每次運行時崩潰,如果代碼不正確,為什么在名稱或 accno 輸入,以及執行此任務的正確方法應該是什么。
void input(struct bankacc b[],int n){
struct bankacc *ptr=NULL;
ptr=b;
for(;ptr<(b n);ptr =1)
{
printf("Enter name: ");
scanf("%s",(ptr)->name);
printf("Enter account number: ");
scanf("%d",ptr->accno);
printf("Enter balance: ");
scanf("%f",ptr->balance);
printf("_____ \n");
}}
代碼圖片:https : //i.stack.imgur.com/JREvb.png
uj5u.com熱心網友回復:
您沒有給出 的定義struct bankcc,但據推測,其成員accno和balance分別是 anint和 a float,而不是指向相同的指標。在這種情況下,您需要將scanf指標傳遞給這些,例如 scanf("%d",&ptr->accno).
此外,如果nameof的成員struct bankacc是一個(足夠長的)陣列char或指向足夠大空間的指標以容納輸入的名稱,則scanf("%s",(ptr)->name)可以(-ish)。但除此之外——例如,如果它char *沒有被分配指向任何存盤——那么這scanf也是無效的。您需要將有效指標傳遞到足夠大的空間以接收輸入。
uj5u.com熱心網友回復:
您忘記獲取結構成員的地址:
void input(struct bankacc b[],int n)
{
struct bankacc *ptr=NULL;
ptr = b;
for(;ptr<(b n);ptr =1)
{
printf("Enter name: ");
scanf("%s", ptr->name);
printf("Enter account number: ");
scanf("%d", &(ptr->accno));
printf("Enter balance: ");
scanf("%f",&(ptr->balance));
printf("_____ \n");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/362494.html
下一篇:macOS12.0.1(Monterey)XIB加載失敗;拋出例外“這個編碼器期望被替換的物件......從NSClassSwapper回傳”
