我想创建一个结构并从键盘输入他们的元素并打印它们,但我似乎没有做对。我收到一堆错误,我真的不知道如何处理&我甚至设法以某种方式打开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);
}
答案 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])。