将文本文件中的int读入C中的数组

时间:2016-03-23 19:54:28

标签: c

我有一个格式如下的文本文件:

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);
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您以错误的方式使用feoffscanf。我建议你一次从文件中读取一行,检查它是否被读取,然后从缓冲区中扫描值,同时检查数组索引是否仍然正常,并扫描正确数量的字段。

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);
    }
}