从文件中读取行并将它们拆分为数组

时间:2017-12-05 10:25:34

标签: c linux file

我正在研究C中的Linux项目。我正在创建一个数字流程,每个流程都以下列格式将其信息写入文件

PID | NAME | TYPE | GENOME

并且process.txt文件看起来像这样:

  • 567 | A | B | 20
  • 568 | N | A | 2
  • 569 | Z | B | 12

我在执行代码时提供的这些信息。我想要做的是让父进程在子执行结束时读取文件,并能够以这种方式将这些值拆分为数组:

    pids[] = {567, 568, 569}
    names[] = {A, N, Z}
    type[] = {B, A, B}
    genome[] = {20, 2, 12}

我一直在寻找一种方法来做这样的事情,但还没有发现任何特定的东西。可以使用可运行的代码。

2 个答案:

答案 0 :(得分:1)

我不会帮助您完成整个代码,但这是一个提示。

读取每一行,然后使用sscanf将值读入数组。

这是一个小代码:

char name;
char type;
int pid;
int genome;

sscanf(line, "%d %c %c %d", &pid, &name, &type, &genome);

答案 1 :(得分:0)

扫描或写入文件时,需要先打开它。 然后,您可以使用 fprintf 来编写要执行的操作,或使用 fscanf 来扫描数据。 要扫描您的文件,请输入以下代码:

int main(){
        char name[4], type[4];
        int pids[4], genome[4];
        int i = 0;
        FILE * file = fopen("process.txt", "r"); // "r" = read 
        while(fscanf(file, "%d|%c|%c|%d\n", &pids[i], name[i], type[i], &genome[i]) != EOF){
            i++;
        }
}