c - 了解 Scanf - 处理格式化输入

标签 c

我正在尝试弄清楚 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/

相关文章:

c - 调试c程序

c - windows和linux生成的可执行文件有什么区别

c - 无法弄清楚这个 c 语法是什么

c - 我需要制作一个 C 程序,它接受作为命令行参数传递的整数并打印总和

c - 文本文件c不会发生更改

c - 递归打印大纲的部分和小节

c - 具有不同参数列表的函数指针赋值

c - 无法读取服务器发送的消息

c - 断言标准输入是开放的

c - 在 C 中分割命令行参数