[英]error when using pointers, dynamically allocating ,struct
我的代碼不運行,我該如何修復它我想我不明白我在使用指針、動態分配、結構時出錯的地方
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
struct nhanVien{
int code;
char name[50];
char sex[50];
int numb;
int wage;
};
void input(nhanVien *worker,int n){
for(int i=0;i<n;i++){
printf("Nhap ma nhanVien : ");
scanf("%d",(worker->code+i));
}
}
int main(){
nhanVien *worker;
int n;
printf("Nhap so luong nhan vien : ");
scanf("%d",&n);
worker = (nhanVien*)malloc(n*sizeof(nhanVien));
input(worker,n);
for(int i=0;i<n;i++){
printf("Nhap ma nhanVien : %d \n",*(worker->code+i));
}
free(worker);
}
一元'*'的無效類型參數(有'int')C中的錯誤這是圖像在此處輸入圖像描述
未聲明名稱nhanVien
。 聲明了類型說明符struct nhanVien
。
所以你需要使用這個名字,例如
void input( struct nhanVien *worker,int n){
或者
struct nhanVien *worker;
或者
worker = (struct nhanVien*)malloc(n*sizeof( struct nhanVien));
這個 scanf 的調用
scanf("%d",(worker->code+i));
是不正確的。 你需要寫
scanf("%d", &( worker + i )->code);
或者
scanf("%d", &worker[i].code);
還有這個 printf 的調用
printf("Nhap ma nhanVien : %d \n",*(worker->code+i));
是不正確的。 你需要寫
printf("Nhap ma nhanVien : %d \n", worker[i].code);
我在你的代碼中發現了一些問題, worker->code+i
應該是worker[i].code
; 您在struct
類型上缺少typedef
。 基本上,你想要類似的東西
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
typedef struct {
int code;
char name[50];
char sex[50];
int numb;
int wage;
} nhanVien;
void input(nhanVien *worker,int n) {
for(int i=0; i<n; i++) {
printf("Nhap ma nhanVien : ");
scanf("%d", &worker[i].code);
}
}
int main() {
nhanVien *worker;
int n;
printf("Nhap so luong nhan vien : ");
scanf("%d",&n);
worker = (nhanVien*)malloc(n*sizeof(nhanVien));
input(worker,n);
for(int i=0; i<n; i++) {
printf("Nhap ma nhanVien : %d \n",worker[i].code);
}
free(worker);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.