输入要结构化的数据

时间:2011-01-31 09:15:04

标签: c struct

当我输入名称并且没有出现时,此代码将进入循环。有什么问题?

# define M 3
struct clas
{
    char name[16];
    int key;
};


struct node
{
    int n; 
    struct node *p[M];  
    struct clas clsf[M-1] ;
};

main()
{
    int i;

    struct clas clsf;
    for(i=0;i<2;i++)
    {
        root = malloc(sizeof (struct node));
        printf("enter name \n");
        scanf("%s\n",root->clsf[i].name);
        printf("%s\n",root->clsf[i].name);
        printf("enter key\n");
        scanf("%d", &root->clsf[i].key);
        printf("%d",root->clsf[i].key);
    }
}

2 个答案:

答案 0 :(得分:4)

  • root未定义,并且有一个未定义struct classifier的实例:clsf

    struct classifier clsf;替换为struct node *root;

  • \n格式中删除结尾scanf

    scanf("%s\n",root->clsf[i].name);

  • 一起使用scanf("%s",root->clsf[i].name);

答案 1 :(得分:1)

仅将struct classifier clsf;替换为struct node *root; 没有必要