c-如何使用Scanf仅从stdin提取字符串



我是C语言的初学者,正在尝试从标准输入中提取字符。

  • 输入=";C0h1r2i3s4">
  • 预期结果=";Chris">

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

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

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

我想知道是否可以使用scanf/fgets只从stdin获取字符?这样我就不必遍历每个字符了。

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

不管怎样,我想知道是否还有更强大的scanset&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中,没有简单的方法可以直接从stdin中提取某些字符。

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

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

最新更新