【问题标题】:Scanf for not the same amount of data in C在 C 中扫描不同数量的数据
【发布时间】:2021-03-18 03:00:42
【问题描述】:

我正在尝试用 C 编写程序代码,但我发现了一个我无法解决的问题。我得到一组输入,但输入并不总是相同的。如何使用 scanf 读取不总是相同数量的数据?

输入 1):

+ 12345 Lala

输入 2):

- 12345

如果我使用这样的东西:

scanf("%s %d %s", a[i], &b[i], c[i]);

终端为我请求更多数据(我理解)。那么我如何使用 scanf 有时读取所有三个(字符串、整数、字符串),有时只读取两个(字符串、整数)?

【问题讨论】:

  • 使用fgets之类的东西将整行读入缓冲区,然后你可以使用sscanf解析其内容。

标签: arrays c scanf


【解决方案1】:

从阅读整行开始

char line[100];

scanf(" %[^\n]", line);

或

fgets(line, 100, stdin);

然后使用sscanf 从该行读取值。

int itemsRead = sscanf(line, "%s %d %s", a[i], &b[i], c[i]);

sscanf 的返回值会告诉你成功从该行读取了多少个值。

【讨论】:

    【解决方案2】:

    你可以试试 fgets:

     char *fgets(char *s, int size, FILE *stream);
    

    【讨论】:

    • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助、质量更好,并且更有可能吸引投票
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多