我正在尝试弄清楚 scanf
是如何工作的。如果我编写这样的代码:
scanf("%s %d %f", name, &age, &wage);
将其作为标准输入:
james 20 34000.25
然后分别打印出姓名、年龄和工资,我得到的正是人们所期望的,与我输入标准输入的内容相同。但是,如果我输入这样的内容:
scanf("%s/%d/%f", name, &age, &wage);
然后我将其作为标准输入输入:
james/20/34000.25
我得到字符串 james/20/34000.25
作为字符串值,0 和 0.00000 分别作为整数和浮点值。我认为 scanf
会像对待第一个版本中的空格一样对待斜杠。如果用户输入斜杠分隔值,我将如何获得它,我可以将这些值适本地分配给变量?
最佳答案
%s
匹配非空白字符(这是贪婪匹配:它不会回溯以查看是否可能有其他匹配)要匹配非正斜杠字符,请使用 %[^/]
(另请注意,scanf 字符串中的空格字符(匹配零个或多个空白字符)与非空格非百分号字符的行为非常不同,例如 '/'
(完全匹配 '/'
)
关于c - 了解 Scanf - 处理格式化输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15330047/