如何使用c中的scanf读取逗号分隔的浮点值

时间:2012-03-01 13:15:49

标签: c

我正在创建一个小工具来读取csv文件数据,这些数据必须从csv文件中读取经度,纬度和信息,并以java脚本对象表示法将其写入另一个文件。 例: 42.363400,-71.098465,速度= 21 42.363327,-71.097588,Speed = 23

现在我知道我可以先读取整行,然后搜索并选择每个数据,将其分配给各个变量。 但是我想知道有没有办法使用scanf在一段时间内将数据提取到变量。我现在正在使用scanf:

scanf("%f %f %100[^\n]s",&latitude,&longitude,info);

我们可以在scanf中进行调整以完成此操作吗?

2 个答案:

答案 0 :(得分:3)

只需将逗号放在需要的位置:还要记住单个空格与0个或多个空格的序列匹配:

while (scanf("%f , %f , Speed = %d",&latitude,&longitude,&speed) == 3)
  /* store in array */

答案 1 :(得分:2)

除了chac的答案之外,您可能还希望使用sscanf(),它接受​​指向缓冲区的指针,而不是scanf()

sscanf(csvFileBuff, "%f , %f , ... ",&latitude,&longitude, ... );