当你有字符串和双变量时如何scanf

时间:2014-12-23 12:19:23

标签: c string double scanf

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

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

1 个答案:

答案 0 :(得分:1)

你几乎拥有它。这是

//   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。