【发布时间】:2014-06-27 23:05:36
【问题描述】:
我正在尝试读取文件并将值存储到结构数组中,然后将值传递给函数。第一个 printf 显示正确的值,但第二个给出全 0。当将值传递给函数时,它也传递全 0。
input data
0 1
0 2
0 3
0 4
0 5
typedef struct
{
int brust_time[MAX];
int arrival_time[MAX];
}Time;
int main()
{
Time *foo;
FILE *fr;
char str[10];
int x = 0;
int m;
fr = fopen("read.txt", "rt");
while(fgets(str, 10, fr) != NULL)
{
x++;
foo = (Time *) malloc(sizeof(Time));
sscanf(str, "%d %d", foo[x].arrival_time,foo[x].brust_time );
printf("x: %d B:%d\n", *foo[x].arrival_time, *foo[x].brust_time);
}
for( m = 0; m <x; m++)
printf("*****x: %d ******B:%d\n", *foo[m].arrival_time, *foo[m].brust_time);
SJF(foo[x].brust_time,foo[x].arrival_time, x);
fclose(fr);
return 0;
}
【问题讨论】:
-
Foo 在每次迭代中都被设置为一个新的内存范围。你没有数组。您只能获得最后一次运行的最后一个句柄。您可以将其设为链表,并为前一个 foo 分配一个名为 next 的下一个 foo 的属性。研究链接列表。
-
很抱歉,您所拥有的东西太多了。开始时要小得多(读取一行,不要动态分配任何东西,并确保添加代码来检查所有可能失败的函数的返回值 - 即至少 fopen 和 scanf)。将编译器的警告打开到最大,并修复所有错误和警告(修复,不要隐藏)。仅当该程序 100% 运行时,即使您输入错误的输出,您也应该继续。确保您也了解数组和指针之间的区别。
标签: c arrays struct parameter-passing