我如何读取 C 中的文本文件并将其打印到屏幕上?

How might I read a text file in C and print it to the screen?

我有一个包含键值对数据的文本文件

(Ann, 67) (Jhon, 78) (Mason, 89)
(Simon, 34) (Ruko, 23)

每一项用space分隔,逗号

后有一个space

我想读取每个元素并逐个打印这些项目

(Ann, 67)
(Jhon, 78)
(Mason, 89)
(Simon, 34)
(Ruko, 23)

我尝试使用以下代码:


    while (fscanf(file, "%s", value) == 1) {
        printf(value);
    }

但没有成功 - 代码用逗号分隔每个值,得到以下输出:

(Ann,
67)
(Jhon,
78)
(Mason,
89)

我该怎么做?

制作数据文件时可以使用逗号。这是一个看起来像的例子:

代码

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

int main(){
    FILE *inFile;
    char name[20], str[80], *i;
    int age;

    inFile = fopen("test.txt", "r");
    if (inFile == NULL){
        printf("Error opening file");
        exit(1);
    }

    while(fgets(str, 80,inFile) != NULL){
        i = strtok(str, ", ");
        strcpy(name, i);
        puts(name);

        i = strtok(NULL, ", ");
        age = atoi(i);
        printf("%d\n", age);
    }

    return 0;
}

文本文件

Ann, 67
Jhon, 78
Mason, 89
Simon, 34
Ruko, 23

而不是使用

while(fscanf...)

您可以尝试类似的方法:

while ((line=getline(&line, &len, file)) != -1) {
    printf("%s", line);
}

正如我在评论中提到的,scanf family of functions 具有简单的模式匹配,可用于读取您的输入:

char text[32];
int value;

while (fscanf(file, " (%32[^,], %d)", text, &value) == 2)
{
    printf("Got (%s, %d)\n", text, value);
}

使用的scanf格式说明:

  • " " 匹配任何前导白色-space
  • "(" 匹配左括号
  • "%32[^,]" 匹配(最多 32 个)字符 除了 逗号
  • "," 匹配逗号
  • "%d"匹配整数值
  • ")" 匹配右括号