這有什么錯誤?我嘗試使用箭頭運算子輸入。
#include <stdio.h>
typedef struct{
char name[100];
int salary;
}emp;
void inp(emp *e){
printf("enter name : ");
gets(e->name);
printf("enter salary : ");
scanf("%d", e->salary);
}
int main() {
emp *e1,*e2;
inp(e1);
inp(e2);
printf("%s , %d\n", e1->name,e1->salary);
printf("%s , %d\n", e2->name,e2->salary);
return 0;
}
我嘗試將 & 甚至將 inp 函式設定為 emp,但它不起作用。它只是問我第一個員工的名字。就這樣!甚至沒有列印輸入工資。我應該做出哪些改變?
uj5u.com熱心網友回復:
emp *e1,*e2;
創建兩個指向任何內容的指標......它們只是未初始化的指標。它們沒有指向任何有效的記憶體。因此,當您使用->您的程式取消參考它們時,可能會崩潰。
您需要使用分配記憶體,例如 malloc
喜歡
e1 = malloc(sizeof *e1);
uj5u.com熱心網友回復:
您的struc創建錯誤。因此,我像這樣更改了您的代碼以使其清楚。我也確實使用了getchar()函式,所以你可以呼叫fget()函式乘法。我想它確實如你所愿。
#include <stdio.h>
struct Emp{
char name[100];
int salary;
};
void func(struct Emp *e){
printf("enter name : ");
fgets(e->name, sizeof(e->name), stdin);
printf("enter salary : ");
scanf("%d", &e->salary);
getchar();
}
int main() {
struct Emp e1,e2;
func(&e1);
func(&e2);
printf("\n%s , %d", e1.name,e1.salary);
printf("\n%s , %d", e2.name,e2.salary);
return 0;
}
uj5u.com熱心網友回復:
您應該首先為您的函式選擇另一個更好的名稱,inp 已經是 c 中的函式名稱,請參見:https : //cboard.cprogramming.com/c-programming/21255-ansi-c-function-inp-outp-inp -inpw.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/406177.html
標籤:
下一篇:添加到結構指標鏈表的尾部
