业余C和结构

时间:2017-08-27 23:38:52

标签: c structure

我想创建一个结构并从键盘输入他们的元素并打印它们,但我似乎没有做对。我收到一堆错误,我真的不知道如何处理&我甚至设法以某种方式打开stdio.h文件。抱歉愚蠢的代码。

我怀疑在这里可能需要for(i = 0; i< 6; i ++)循环,但我无法理解为什么如果我想要的是进入结构的成员就应该如此。 ..

#include <stdio.h>

typedef struct data {
    int DD[2];
    int MM[2];
    int GGG[3];
    int RR[2];
    int BBB[3];
    int K[1];
} Data;

Data *p;

main()
{
    printf("Enter DD");
    scanf(p->DD);
    printf("Enter MM");
    scanf(p->MM);
    printf("Enter GGG");
    scanf(p->GGG);
    printf("Enter RR");
    scanf(p->RR);
    printf("Enter BBB");
    scanf(p->BBB);
    printf("Enter K");
    scanf(p->K);

    printf("%d%d%d%d%d%d", data.DD, data.MM, data.GGG, data.RR, data.BBB, data.K);
}

1 个答案:

答案 0 :(得分:1)

使用scanf(p->DD);

切换scanf("%d", &(p->DD));

scanf需要输入字符串的格式作为第一个参数,并将数据存储到第二个参数的地址。

另外,在printf的%d之间加一些空格(甚至更冷,有些\t),以获得更可读的输出。

编辑:因为这里有一些其他错误是对代码的一般修正:

#include <stdio.h>

typedef struct data 
{
    int DD[2];
    int MM[2];
    int GGG[3];
    int RR[2];
    int BBB[3];
    int K[1];

} Data;

main()
{   
   Data d;
   Data* p = &d;

   printf("Enter DD");
   scanf("%d", &(p->DD[0]));
   printf("Enter MM");
   scanf("%d", &(p->MM[0]));
   printf("Enter GGG");
   scanf("%d", &(p->GGG[0]));
   printf("Enter RR");
   scanf("%d", &(p->RR[0]));
   printf("Enter BBB");
   scanf("%d", &(p->BBB[0]));
   printf("Enter K");
   scanf("%d", &(p->K[0]));

   printf("%d %d %d %d %d %d", d.DD[0], d.MM[0], d.GGG[0], d.RR[0], d.BBB[0], d.K[0]);
}

无论如何,您不必进行任何循环来填充数组的剩余空间。如果你想填充其他空格,只需要scanf("%d", &(p->BBB[1]));scanf("%d", &(p->BBB[2]));等等你想要填充的位置(记住第一个元素是位置0,最后一个是位置大小-1,例如,DD的最后一个元素是DD [1])。