[英]how to read values from a structure in C
#include<stdio.h>
#define msize 4096
struct memory
{
int a[msize];
};
void main()
{
struct memory m;
m.a[0]=250; // temperature value of 25,0
m.a[4]=01; // heater status OFF
m.a[8]=240; // temperature value of 24,0
m.a[12]=00; // heater status ON
m.a[16]=220; // temperature value of 22,0
m.a[20]=00; // heater status ON
read(&m);
}
void read(struct memory m)
{
int i;
for(i=0;i<sizeof(msize);i++)
{
scanf("%d", m.a[i]);
}
}
我的代码创建了一个4096字节大小的结构,该结构的对象,然后将值赋给i。
在编译时,编译器在read
函数中引发“此处首先定义”错误。
另外,有人可以帮我将读取的值转换为ASCII吗?
您需要传递一个scanf
地址来写入,因此需要更改
scanf("%d", m.a[i]);
至
scanf("%d", &m.a[i]);
// ^
您还应该考虑传递指向m
的指针以进行read
而不是按值传递此庞大的结构
void read(struct memory* m)
{
int i;
for(i=0;i<msize;i++)
{
scanf("%d", &m->a[i]);
}
}
(实际上,通过假定此更新,您对main
read(&m)
调用似乎已经存在。)
除了@simonc所说的以外,您还应该首先声明该函数:
#include<stdio.h>
#define msize 4096
struct memory
{
int a[msize];
};
void read(struct memory m);
void main()
{
//...
#include<stdio.h>
#define msize 4096
struct memory
{
int a[msize];
};
void read(struct memory *m)
{
int i;
for(i=0;i<sizeof(msize);i++)
{
scanf("%d",&m->a[i]);
}
}
int main()
{
struct memory m;
m.a[0]=250; // temperature value of 25,0
m.a[4]=01; // heater status OFF
m.a[8]=240; // temperature value of 24,0
m.a[12]=00; // heater status ON
m.a[16]=220; // temperature value of 22,0
m.a[20]=00; // heater status ON
read(&m);
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.