我是C语言的初学者,正在尝试从标准输入中提取字符。
- 输入=";C0h1r2i3s4">
- 预期结果=";Chris">
我尝试了两种方法来实现这一点:
-
使用scanf将输入存储在一个变量中->每次遍历输入一个字符->如果该字符不是ASCII表中的数字,则将该字符存储在变量中
-
使用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上没有足够的声誉,我无法添加评论,我刚刚意识到我可以回复自己的帖子。