C 有字符串和双变量时如何扫描

C 有字符串和双变量时如何扫描,c,string,double,scanf,C,String,Double,Scanf,我需要scanf以下格式的数据:带空格的字符串:22.22kn 2.22L。(kn kuna是克罗地亚语) 所以我需要将它保存在一个字符串中两个双变量中并且我需要避免冒号、空格、kn和L。 我试过这个: scanf(" %[^:] %lfL %lfkn\n",tmpName,&tmpQuant,&tmpPrice) 你差点就成功了。它是 // colon --+ +-----+---- the units were mixed up // v

我需要
scanf
以下格式的数据:带空格的字符串:22.22kn 2.22L。(kn kuna是克罗地亚语)
所以我需要将它保存在一个
字符串中
两个
双变量中
并且我需要避免冒号、空格、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就不会试图写超出缓冲区末尾的内容。

谢谢,我只需要第二个冒号。我把有问题的单元搞混了,但现在我有了difrent问题,我得到了srig的nema,这很好,但双变量返回零