C语言程序编译错误 request for member 'num' in something not a structure or union

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言程序编译错误 request for member 'num' in something not a structure or union相关的知识,希望对你有一定的参考价值。

如题 源程序如下:
#include<stdio.h>
#include<stdlib.h>
struct student

int xuehao;
char name[10];
char sex;
char num[5];
int age;
char ID[20];
char depart[20];
char destination[20];
char date[10];
char kind[4];

;
int main()

FILE *fp;
struct student acm[1000];
int i,flag=1,flag2=0;
char choose;
for(i=0;i<1000;i++)

acm[i].xuehao=0;

fp=fopen("d:\\text.txt","r");
i=0;
while(!feof(fp))
fscanf(fp,"%d %s %c %s %d %s %s %s %s %s",&acm[i].xuehao,acm[i].name,&acm[i].sex,acm.num,&acm[i].age,acm[i].ID,acm[i].depart,acm[i].destination,acm[i].date,acm[i].kind);

i++;

fclose(fp);
while(1)

printf("A: Add\nD: Delete\nM: Modify\nQ: Query\nS: Statistics\nE: Exit\n");
printf("Please choose from A,D,M,Q,S and E\n");
printf("What do you want to do?:");
if(flag2==1) getchar();
flag2=1;
scanf("%c",&choose);
getchar();
switch(choose)

case 'A':printf("\n");break;
case 'D':printf("\n");break;
case 'M':printf("\n");break;
case 'Q':printf("\n");break;
case 'E':printf("\n");
fp=fopen("d:\\text.txt","w");
for(i=0;acm[i].xuehao!=0;i++)
if(acm[i].xuehao==-1) continue;
fprintf(fp,"%d %s %c %s %d %s %s %s %s %s\n",acm[i].xuehao,acm[i].name,acm[i].sex,acm.num,acm[i].age,acm[i].ID,acm[i].depart,acm[i].destination,acm[i].date,acm[i].kind);

fclose(fp);
flag=0;break;
default:printf("sorry,your choice is error!\n\n\n\n");break;



return 0;

因为结构体student里面的num是个数组,而不是一个普通的变量。
当你想访问num这个数组的时候,你应该这么样acm[i].num[1]指定想要访问的数据元素。
参考技术A 根据提示,直接把两处的acm.num改成acm->num不就行啦。 参考技术B 我来做个任务,路过

以上是关于C语言程序编译错误 request for member 'num' in something not a structure or union的主要内容,如果未能解决你的问题,请参考以下文章

添加 request_mem_region 后,我的驱动程序每次第一次访问都会失败,并显示“忙碌”消息

一道c语言题,编译无错误,调试时出现“0x00403c2c 指令引用的 0x00000001 内存”,该内存不能为read。

调用 request_mem_region() 失败

转:gpio_request

C ++,g ++编译错误函数

request_mem_region,ioremap 和phys_to_virt()