我有一個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