簡體   English   中英

使用指針、動態分配、結構時出錯

[英]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.

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