【发布时间】:2017-12-04 15:29:22
【问题描述】:
抱歉,如果这是我犯的一些愚蠢的错误,我只是一个菜鸟。
首先,我创建了一个结构体;
struct StarsStruct
{
int SerialNumber;
char StarName[10];
double x;
double y;
};
然后,我创建了一个结构指针数组,使用; (NumberOfStars 只是一个 int 变量)这是在程序顶部,在任何 if 语句之前声明和初始化的。
struct StarsStruct *Stars = malloc(sizeof(struct StarsStruct) * NumberOfStars);
我已经做了一个 for 循环来更改我的结构数组中成员的值;
for (int i = 0; i < NumberOfStars; i++)
{
r1 = rand() % (60 + 1 - 0) + 0;
r2 = rand() % (30 + 1 - 0) + 0;
Stars[i].SerialNumber = i;
Stars[i].x = r1;
Stars[i].y = r2;
Plot(r1, r2, '.');
}
但是,当我转到第二个 IF 语句时,由于某种原因,这些值被完全删除了;
全部代码;
if (strcmp(CurrentCommand, "bang") == 0)
{
Clear();
printf("Enter the number of stars to be created: ");
scanf("%d", &NumberOfStars);
//Stars = malloc(sizeof(struct StarsStruct) * NumberOfStars);
for (int i = 0; i < NumberOfStars; i++)
{
r1 = rand() % (60 + 1 - 0) + 0;
r2 = rand() % (30 + 1 - 0) + 0;
Stars[i].SerialNumber = i;
Stars[i].x = r1;
Stars[i].y = r2;
Plot(r1, r2, '.');
}
}
else if (strcmp(CurrentCommand, "list") == 0)
{
Stars[0].SerialNumber;
Stars[1].y;
Stars[2].SerialNumber;
Stars[3].SerialNumber;
Stars[4].x;
Stars[5].y;
for (int i = 0; i < NumberOfStars; i++)
{
printf("%d", Stars[0].SerialNumber);
}
}
【问题讨论】:
-
这不是第二个 if 语句,而是一个 else if 语句。你不能同时进入这两个部分。
-
您需要在函数中显示更多上下文。目前还不清楚每个部分是如何被调用的以及你在用
Stars做什么。 -
除非您的问题是关于 IDE 本身,否则请不要发布您的 IDE 的屏幕截图。创建并发布minimal reproducible example(作为文本)。
-
那么,当你进入你的“第二个 if 语句”时,你确定你之前已经执行了你的“第一个 if 语句”吗?整个事情是如何运作的?您的“代码的完整部分”根本没有使它更清晰。
-
@Erik W:显然,OP 知道。他们把它放在那里只是为了能够通过用鼠标瞄准它们来检查值。这没有任何意义,但仍然......
标签: c if-statement struct