我有一个格式如下的文本文件:
100 0 10 1
101 6 10 1
102 8 4 1
103 12 20 1
104 19 15 1
105 30 5 1
106 35 10 1
我需要将这些数字分别放入数组pID [],arrival [],bursts []和priority []中。 C不是我最强的语言,所以我在这方面遇到了一些麻烦。
这是我目前的代码:
void readFile(int n, int pID[], int arrival[], int bursts[], int priority[]){
FILE *file;
int i = 0;
file = fopen("Process.txt", "r");
//File format is pID, arrival, bursts, and priority
if (file){
while (!feof(file)){
pID[i] = fscanf(file, "%d ", &i);
arrival[i] = fscanf(file, "%d ", &i);
bursts[i] = fscanf(file, "%d ", &i);
priority[i] = fscanf(file, "%d ", &i);
}
fclose(file);
}
感谢您的帮助!
答案 0 :(得分:1)
您以错误的方式使用feof
和fscanf
。我建议你一次从文件中读取一行,检查它是否被读取,然后从缓冲区中扫描值,同时检查数组索引是否仍然正常,并扫描正确数量的字段。
void readFile(int n, int pID[], int arrival[], int bursts[], int priority[]) {
FILE *file;
int i = 0;
char buffer[100];
file = fopen("Process.txt", "r");
if (file){
while (i < n && fgets(buffer, sizeof buffer, file) != NULL) {
if(sscanf(buffer, "%d%d%d%d", &pID[i], &arrival[i], &bursts[i], &priority[i]) != 4) {
exit(1); // or recovery strategy
}
i++;
}
fclose(file);
}
}