我需要scanf
这种形式的数据:string whith spaces:22.22kn 2.22L。 (kn-kuna是克罗地亚的cuurency)
所以我需要将它保存在一个string
和两个double
变量中,我需要避免使用冒号,空格,kn和L.
我试过这个:
scanf(" %[^:] %lfL %lfkn\n",tmpName,&tmpQuant,&tmpPrice)
答案 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。