繁体   English   中英

如何使用 Scanf 从标准输入中仅提取字符串?

[英]How to extract string-only from stdin using Scanf?

我是 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"
} 

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM