【问题标题】:How to extract string-only from stdin using Scanf?如何使用 Scanf 从标准输入中仅提取字符串?
【发布时间】:2022-09-24 17:08:00
【问题描述】:

我是 C 的初学者,并试图从标准输入中提取字符。

  • 输入= \"C0h1r2i3s4\"
  • 预期结果=“克里斯”

我尝试了两种方法来实现这一点:

  1. 使用 scanf 将输入存储在一个变量中-> 一次遍历输入一个字符 -> 如果该字符不是 ASCII 表中的数字,则将该字符存储在变量中

  2. 使用 fgets 获取输入并存储在一个变量中-> 一次遍历输入一个字符 -> 如果该字符不是 ASCII 表中的数字,则将字符存储在变量中

    我想知道是否可以使用 scanf/fgets 仅从标准输入中获取字符?这样我就不必遍历每个字符。

    我尝试在下面使用 scanset ,但似乎 scanf 总是在字符级别进行筛选,并在下一个字符不符合指定格式时停止。

    无论如何,我想知道是否有更强大的使用scanset & scanf。


    scanf() 的代码

    #include <stdio.h>
    #include <stdlib.h>
        
    void main()
    {
    char str[50];
    //intput = C0h1r2i3s4
    scanf(\"%s\", &str); // str = \"C0h1r2i3s4\"
            
    //intput = C0h1r2i3s4
    scanf(\"%*c%*d%s\", &str); // str = \"h1r2i3s4\" -> C & 0 is ignored
            
    //intput = C0h1r2i3s4
    scanf(\"%[A-Z,a-z]%*d%s\", &str); // str = \"C\" -> are they a valid format identifier? \"%[A-Z,a-z]%*d%s\"
    } 
    
  • scanf() 的功能对于您的任务来说太有限了。阅读整行代码并使用您自己的代码进行处理。

标签: c scanf


【解决方案1】:

只是想关闭这个问题,以防其他人正在寻找类似的问题

在 C 中,没有简单的方法可以直接从标准输入中提取某些字符。

  • 首先,我们需要从标准输入读取完整的输入
  • 然后,我们遍历输入以决定关注哪些字符

谢谢你,忙碌的蜜蜂,今年早些时候你的评论挽救了我的生命。由于在 GitHub 上没有足够的声誉,我无法添加评论,我刚刚意识到我可以回复自己的帖子。

【讨论】:

    猜你喜欢
    • 2011-01-31
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多