c - 当你有字符串和双变量时如何扫描

标签 c string double scanf

我需要scanf 这种形式的数据:string whith spaces: 22.22kn 2.22L 。 (kn-kuna 是克罗地亚货币)
所以我需要将它保存在一个 string 和两个 double 变量中,我需要避免冒号、空格、kn 和 L。
我试过这个:

 scanf(" %[^:] %lfL %lfkn\n",tmpName,&tmpQuant,&tmpPrice)

最佳答案

你几乎成功了。这是

//   colon --+    +-----+---- the units were mixed up
//           v    v     v
scanf(" %[^:]: %lfkn %lfL", tmpName, &tmpQuant, &tmpPrice);

但是,为了安全起见,您应该在字符串匹配中包含缓冲区的长度:

char tmpName[128]; // for example

 //       v--- length here
scanf(" %128[^:]: %lfkn %lfL", tmpName, &tmpQuant, &tmpPrice);

这样 scanf 就不会试图写入超出缓冲区的末尾。

关于c - 当你有字符串和双变量时如何扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27620233/

相关文章:

c - 为什么这个 print 语句会出错?

c++ - 获取字符串中的第 i 个字符时遇到问题

c - 在 C 中从较长字符串中提取子字符串的最佳方法是什么

java - 如何解析计算器项目中的操作数和运算符?

sql-server - SQL 插入 : comma as decimal

c - 解释为什么这两个多维数组看起来是有效的语法,但只有一个给出了预期的结果?

c - 如何生成一个可以包含所有大于零的自然数的数组?

c - 哪个程序在给定任何文件的情况下创建一个 C 数组?

python - 在没有科学记数法的情况下将 float 转换为字符串

c - 在 C 中使用文字值与计算值时答案不正确