我有一个C程序,我正在从一个文件中读取数据,然后尝试打印它以便在此刻进行测试。我遇到的问题是,我的常量在MAX = 40,并且它的打印次数。我试过在函数中传递jobcount的引用,但是当我在int之后添加*时,在jobcount传递之前添加&时出现错误。我感谢他们的帮助,对所有问题始终保持高质量的投入!在C中传递变量
#include <stdio.h>
struct record{
char name[1];
int arrival_time;
int job_length;
int job_priority;
};
const int MAX = 40;
void fileinput(struct record jobs[MAX], int jobcount);
void output(struct record jobs[MAX], int jobcount);
int main(void)
{
struct record jobs[MAX];
int jobcount;
fileinput(jobs,jobcount);
output(jobs,jobcount);
return(0);
}
void fileinput(struct record jobs[MAX], int jobcount){
jobcount = 0;
FILE *f = fopen("data.dat","r");
while(fscanf(f, "%s %d %d %d", jobs[jobcount].name, &jobs[jobcount].arrival_time, &jobs[jobcount].job_length, &jobs[jobcount].job_priority) != EOF)
{
jobcount++;
printf("READ IN TEST \n");
}
}
void output(struct record jobs[MAX], int jobcount){
int j = 0;
for(j = 0;j < jobcount; j++)
{
printf("%s %d %d %d\n", jobs[j].name, jobs[j].arrival_time, jobs[j].job_length, jobs[j].job_priority);
printf("FOR LOOP TEST \n");
}
}
data.dat文件看起来像这样
A1 3 3 3
B1 4 4 4
C1 5 5 5
这是我得到的错误。 gcc projectv2.c -o project projectv2.c:在函数'fileinput'中: projectv2.c:26:38:error:数组下标不是整数 projectv2.c:26:60:error:数组下标不是整数 projectv2.c:26:90:错误:数组下标不是整数 projectv2.c:26:118:错误:数组下标不是整数 – Intelwalk
@Intelwalk - 正如我之前提到的,您需要解除引用指针。数组索引必须是一个整数,但是您提供的是一个指针。所以,你需要在访问''(* jobcount)'之前取消引用'jobcount',而不管你使用什么。 – Mahesh
我现在得到了分段错误。这里是我的代码:#include struct record { char name [1]; int arrival_time; int job_length; int job_priority; }; const int MAX = 40; void fileinput(struct record jobs [MAX],int * jobcount); void output(结构记录作业[MAX],int jobcount); int main(void) { struct record jobs [MAX]; int jobcount; fileinput(jobs,&jobcount); 输出(jobs,jobcount); return(0); } –
Intelwalk