c - 从文件中读取并存储在 C 中

标签 c scanf gets

我正在尝试读入一个字符串后跟数字的文本文件,然后存储它的内容。到目前为止,如果格式正确,我只能让它打印出字符串(或只是 int,或两者)。如何跳过空白行或格式错误的行(当前重复前一行)并存储结果?

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

#define MAX_LINE_LENGTH 400

int main ()
{
    char input[MAX_LINE_LENGTH];
    char name[MAX_LINE_LENGTH];
    int number;

    FILE *fr;
    fr = fopen ("updates.txt", "r");
    if (!fr)
    return 1;  
    while (fgets(input,MAX_LINE_LENGTH, fr)!=NULL)
    {
        /* get a line, up to 200 chars from fr.  done if NULL */
        sscanf (input, "%s", name);
        /* convert the string to just a string */
        printf ("%s\n", name);
    }
    fclose(fr);
    return 0;
}

示例文本文件

Cold 5
10 Flames

Doggy                      4

Flames 11
Cold 6

最佳答案

您可以使用 fscanf 函数。格式字符串中的空格使其忽略任何空格、制表符或换行符。

关于c - 从文件中读取并存储在 C 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19969378/

相关文章:

c - 第二个字符串没有被扫描

c++ - 在 C++ 中从文件中读取 double 的最快方法

在 C 中导致 gets() 在 SIGINT 时退出

c - 使用 ftell() 和 fseek() 函数时遇到问题

c - OpenMP 有序子句

C编程输入错误

c - 当 gets(t) 从命令行获取输入 "Q"时,为什么 t != "Q"不终止 while 循环?

c - 是否可以将 C 数据类型存储在变量中?

c - 带标题的单链表 - 错误

c - while 中的 EOF 跳出范围