用C读取文本文件,将行分成多个变量

橡树岭喷气机

我目前正在研究一个模拟各种CPU调度方法的程序。目前,我有要求输入的程序:

printf("Enter type of CPU scheduling algorithm (SJF, RR, PR_noPREMP, PR_withPREMP): ");
scanf("%s", typeOf);

printf("Enter number of processes: ");
scanf("%d", &numPro);

struct processStruct structs[numPro];
int burstTimes[numPro];

for (i = 0; i < numPro; i++) {
    printf("Enter process number: ");
    scanf("%d", &structs[i].pNum);
    printf("Enter arrival time: ");
    scanf("%d", &structs[i].arTime);        
    printf("Enter CPU burst time: ");
    scanf("%d", &structs[i].cpuBur);        
    printf("Enter priority: ");
    scanf("%d", &structs[i].prio);
}

除了两个变量typeOf(一个int)和numPro(一个char数组)之外,我还使用了数据结构。

这是保存各种参数的数据结构:

struct processStruct {
    int pNum;
    int arTime;
    int cpuBur;
    int prio;
    int waitTim;
};

除了使用人工输入外,我还想使用一个文本文件,该文本文件具有与程序输入相同的信息。文本文件如下所示:

SJF
4
1 0 6 1
2 0 8 1
3 0 7 1
4 0 3 1

第一行是调度算法的名称。第二行是进程数。以下各行包含每个过程的信息。所以1 0 6 1 =进程= 1,0 =到达时间,6 = CPU突发时间,1 =优先级

不幸的是,我在C上使用文本文件输入的经验很少。有人对我如何将文本文件中的数据读入变量和数据结构有想法吗?

谢谢

编辑:我遇到的问题之一是每一行的数据都不相同。如果只是4个数字的行,那将是相对容易的。我需要程序将第一行读入char数组(字符串),第二行读入numPro变量,然后将后续行读入数据结构的多个实例(每个进程一个)。

风向标

fscanf()由于第一行标识符以外的所有内容都是数字因此可以相当简单地读取文件但是您确实需要检查从文件读取的内容的有效性。我只是用exit(1)错误进行说明,它可能比错误更复杂(例如,错误消息)。

#include <stdio.h>
#include <stdlib.h>

#define MAX 100

struct processStruct {
    int pNum;
    int arTime;
    int cpuBur;
    int prio;
    int waitTim;
};

struct processStruct structs[MAX];

int main(int argc, char** args)
{ 
    FILE *fil;
    char typeOf[4];
    int numPro, i;
    if ((fil = fopen("myfile.txt", "rt")) == NULL)
        exit(1);
    if(fscanf(fil, "%4s", typeOf) != 1)
        exit(1);
    if(fscanf(fil, "%d", &numPro) != 1)
        exit(1);
    if(numPro > MAX)
        exit(1);
    for(i=0; i<numPro; i++) {
        if(fscanf(fil, "%d%d%d%d", &structs[i].pNum, &structs[i].arTime,
                                   &structs[i].cpuBur, &structs[i].prio) != 4)
            exit(1);
    }
    fclose(fil);

    // test the result
    printf("Type: %s\n", typeOf);
    printf("Num: %d\n", numPro);
    for(i=0; i<numPro; i++) {
        printf("%d %d %d %d\n", structs[i].pNum, structs[i].arTime,
                                structs[i].cpuBur, structs[i].prio);
    }
    return 0;
}

程序输出:

Type: SJF
Num: 4
1 0 6 1
2 0 8 1
3 0 7 1
4 0 3 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C编程-从文本文件读取特定行

来自分类Dev

将文本文件中的特定行读取到批处理文件中的变量

来自分类Dev

将文本文件分成几行

来自分类Dev

将文本文件按Powershell中的内容分成多个文件

来自分类Dev

将文本文件分成块

来自分类Dev

用C读取文本文件,将行分成多个变量

来自分类Dev

读取文本文件,将每一行分成单独的数组,然后在C中排序

来自分类Dev

从C中的文本文件读取多个数字

来自分类Dev

从C中的文本文件读取前N行

来自分类Dev

从文本文件读取变量

来自分类Dev

C编程-从文本文件读取特定行

来自分类Dev

C编程读取文本文件的特定行

来自分类Dev

将文本文件分成几行

来自分类Dev

如何将文本文件行读取为变量而不是文本

来自分类Dev

从文本文件中读取变量c#StringBuilder

来自分类Dev

在C#中从文本文件读取多维变量

来自分类Dev

用循环将行写入文本文件

来自分类Dev

Powershell-读取单个文本文件,并根据行中的文本将内容排序为多个文件

来自分类Dev

读取多个文本文件Java

来自分类Dev

如何将每个文本文件行分成单独的列表?

来自分类Dev

用C#读取文本文件

来自分类Dev

从文本文件读取行到结构C

来自分类Dev

C#从多个文本文件中读取,将行拆分成一个List,然后加载到ListBox中

来自分类Dev

从特定行读取文本文件

来自分类Dev

用 C 读取文本文件

来自分类Dev

Powershell 从文本文件中读取多个变量

来自分类Dev

从文本文件中读取行并自动分配变量

来自分类Dev

读取文本文件的特定行 [C#]

来自分类Dev

将 Python 变量写入多个文本文件