首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于变长结构体的有关问题

2012-02-15 
关于变长结构体的问题有人能帮我看看这个程序吗?我想要结构体数组中的N动态输入的,这么写了,不知道哪里有

关于变长结构体的问题
有人能帮我看看这个程序吗?我想要结构体数组中的N动态输入的,这么写了,不知道哪里有错误,编译痛不过,有哪位大哥帮我看看吗?

C/C++ code
#include <stdio.h>#include <malloc.h>typedef struct Person{    char name[8];    char sex;    int age;    float money;}Person;//struct Person *a;//全局变量,动态分配数组长度Person *a=(Person *) malloc (sizeof(Person)*(n+1)); void input(int n){    int i;    struct Person x;//局部变量    for (i=0;i<n;i++)    {        scanf("%s %c %d %f",x.name,&x.sex,&x.age,&x.money);//一条记录        a[i]=x;//结构体赋值    }}void output(int n,int x){    int i;    for (i=0;i<n;i++)    {        if (a[i].age>=x)        {            printf("%s",a[i].name);            if (a[i].sex='m')            printf("%-4s","男");            else if (a[i].sex='w')            printf("%-4s","女");            else             printf("性别出错!");            printf("-4%d",a[i].age);            printf("-4%d",a[i].money);        }    }}void main(){    int n,x;    scanf("%d %d",&n,&x);        input(n);    output(n,x);}


[解决办法]
哥,你Person *a=(Person *) malloc (sizeof(Person)*(n+1)); 
这条语句的n定义了没????
[解决办法]
改了一个全的,供参考:
C/C++ code
#include <stdio.h>#include <stdlib.h>typedef struct Person{    char name[8];    char sex;    int age;    float money;} Person;//struct Person *a;//全局变量,动态分配数组长度//Person *a=(Person *) malloc (sizeof(Person)*(n+1)); //void input(int n)void input(Person *a, int n) {    int i;    //struct Person x;//局部变量    for (i=0;i<n;i++)    {    scanf("%s %c %d %f", a[i].name,&a[i].sex,&a[i].age,&a[i].money);        //scanf("%s %c %d %f",x.name,&x.sex,&x.age,&x.money);//一条记录        //a[i]=x;//结构体赋值    }}//void output(int n,int x)void output(Person *a, int n,int x){    int i;    for (i=0;i<n;i++)    {        if (a[i].age>=x)        {            printf("%s",a[i].name);            //if (a[i].sex='m')            if(a[i].sex == 'm')                 printf("%-4s","男");            //else if (a[i].sex='w')        else if (a[i].sex == 'w')                printf("%-4s","女");            else                 printf("性别出错!");            //printf("-4%d",a[i].age);            printf("%-4d",a[i].age);            //printf("-4%d",a[i].money);            printf("%.3f",a[i].money);          printf("\n");        }    }}void main(){    int n,x;    scanf("%d %d",&n,&x);        Person *a=(Person *) malloc (sizeof(Person)*(n+1));     input(a, n);    output(a, n,x);        free(a);    a = NULL;} 

热点排行