0

我的代码不运行,我该如何修复它我想我不明白我在使用指针时错误的地方,动态分配,结构

#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中的错误这是图像在此处输入图像描述

4

2 回答 2

1

我在您的代码中发现了一些问题,worker->code+i应该是worker[i].code;您缺少typedef类型struct。基本上,你想要类似的东西

#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);
}
于 2021-11-22T16:07:55.420 回答
0

名称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);
于 2021-11-22T16:05:46.150 回答