【问题标题】:Scanning multiple strings from the same line in a file (C)从文件中的同一行扫描多个字符串 (C)
【发布时间】:2017-01-13 17:04:49
【问题描述】:

我试图从程序访问的文件的同一行中扫描(可能使用 fgets)6 个不同的字符串。我使用以下结构来保存 6 个不同的字符串:

struct _entry {
    char subject[10];
    char prof_name[10];
    char prof_surname[10];
    int period;
    int credits;
    int pass_rate;
};
struct _entry entry[MAX_LINES];

如果有人可以帮助我从文件中扫描 1 行,我可以将 3 个字符串和 3 个数字分配给每个结构值。

【问题讨论】:

  • 使用fgets() 读取一行,使用sscanf()strtok() 将其解析为单独的字段。
  • 您之前使用过scanf?只需使用它来读取具有一个格式字符串的所有字符串和数字。
  • @Someprogrammerdude Don't use scanf!
  • @AryamanArora 我不是告诉 OP 使用 scanf 来读取一行,而是使用多种格式代码实际扫描和标记所需的不同输入部分。
  • @AryamanArora 为工作使用正确的工具。 scanf()(有宽度限制)在少数情况下是最好的工具,fgets() 在大多数情况下更好,尤其是对于那些从 C 开始的人。

标签: c struct file-access


【解决方案1】:

使用 - 逐行读取文件

  fgets() or getline 

(getline() 不可移植。它仅适用于基于 linux 的应用程序)

使用 - 解析行

   strtok or strtok_r or sscanf

使用 - 将解析后的字符串转换为整数

    atoi

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多