繁体   English   中英

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

[英]Reading multiple lines at a time in text file - C

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

第一组

加布·西奥多·西蒙

得分10

2组

乔什·詹姆斯·马修

得分9

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

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

您可以使用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;
}

在这里,我重构了以前考虑的所有内容。 我正在提供一种新的解决方案,以使用C工具在文本文件中获取行。 通过结合以下不同的编程技术,我得以实现:

  • 正则表达式
  • 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. 通过重定向文本文件运行它:./(executable_goes_here)<(text_file_created_goes_here)

像这样:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM