【发布时间】:2022-09-24 17:08:00
【问题描述】:
我是 C 的初学者,并试图从标准输入中提取字符。
- 输入= \"C0h1r2i3s4\"
- 预期结果=“克里斯”
我尝试了两种方法来实现这一点:
-
使用 scanf 将输入存储在一个变量中-> 一次遍历输入一个字符 -> 如果该字符不是 ASCII 表中的数字,则将该字符存储在变量中
-
使用 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()的功能对于您的任务来说太有限了。阅读整行代码并使用您自己的代码进行处理。