在文本文件中一次读取多行 - C.

时间:2016-11-12 13:41:57

标签: c file-io

我的输入文件基本上是这样的:

第1组

加布西奥多·西蒙

得分10

第2组

Josh James Matthew

得分9

我通常在阅读文件时使用fscanf,但我不知道如何在一次阅读三行时使用它。我还是新来的c所以有人可以帮助我吗?

编辑:对不起,我忘了说组成员并不总是3.它甚至可以是数百个

3 个答案:

答案 0 :(得分:1)

您可以使用fgets从文件中逐行阅读。

这样的事情会让你开始:

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

#define MAXSIZE 100

int
main(void) {
    FILE *fp;
    char line[MAXSIZE];

    fp = fopen("yourfile.txt", "r");
    if (fp == NULL) {
        fprintf(stderr, "%s\n", "Error reading from file");
        exit(EXIT_FAILURE);
    }

    while (fgets(line, MAXSIZE, fp) != NULL) {
        printf("%s\n", line);
    }

    fclose(fp);

    return 0;
}

答案 1 :(得分:0)

在这里,我重构了我之前想过的一切。我正在提供一个新的解决方案,使用C工具在文本文件中获取行。我能够通过组合不同的编程技术来实现这一目标,如下所示:

  • Regex
  • C提供的功能:

    scanf():收集字符串
       getchar():检查文件的结尾

    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAXSIZE 500
    
    int
    main(void) {
        char line[MAXSIZE];
        while (scanf("%499[^\n]", line)== 1 && getchar() != EOF) {
        printf("%s\n", line);
      }
    
      return 0;
    }
    

从终端运行此C代码的步骤:

  1. 创建文本文件
  2. 编译C代码
  3. redirecting text file运行:./(executable_goes_here)&lt; (text_file_created_goes_here)

答案 2 :(得分:0)

像这样:

char group[32], name[128], score[32];
FILE *fp = fopen("score.txt", "r");
while(3 == fscanf(fp, "%31[^\n]%*c%127[^\n]%*c%31[^\n]%*c", group, name, score)){
    printf("%s, %s, %s\n", group, name, score);
}
fclose(fp);