-1
#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 吗?

4

3 回答 3

3

您需要传递scanf要写入的地址,因此需要更改

scanf("%d", m.a[i]);

scanf("%d", &m.a[i]);
//          ^

您还应该考虑传递指向的指针mread不是按值传递这个巨大的结构

void read(struct memory* m)
{
    int i;
    for(i=0;i<msize;i++)
    {
        scanf("%d", &m->a[i]);
    }
}

(事实上​​,假设此更新,您的read(&m)电话main似乎已经出现了。)

于 2013-05-08T09:18:06.673 回答
1

除了@simonc 所说的,您还应该在顶部声明该函数:

#include<stdio.h>
#define msize 4096

struct memory
{
int a[msize];
};

void read(struct memory m);

void main()
{
//...
于 2013-05-08T09:21:43.227 回答
0
#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;
}
于 2013-05-08T10:12:27.137 回答