首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >windows中的自制strsep()

windows中的自制strsep()
EN

Stack Overflow用户
提问于 2013-12-30 17:01:16
回答 1查看 893关注 0票数 0

我正在尝试将linux中的一些代码移植到Windows,但在移植strsep()函数时遇到了问题。我在论坛上查了一下,发现了以下内容:https://stackoverflow.com/a/8514474/2833912

但是不正确地解析包含双值的字段。文件中的行如下:

代码语言:javascript
复制
node|171353||||||||-15.425|45.325

我感兴趣的是提取第二个字段和最后两个字段,分别作为unsigned long和double。使用该链接中的mystrsep()函数和下面的代码,我获得了正确解析的第二个字段,但是两个双字段被打印为"7014352.000000“或"-1.#IND00",这是不正确的。

代码语言:javascript
复制
int main(void)
{
  FILE *fp;
  char lineBuf[80000];
  char *token;
  double lat,lon;
  unsigned long id,i;

  if((fp = fopen("spain.csv", "r"))==NULL){
      fprintf (stderr, "\nError when opening file\n");
       return ;
    }

    for(i=0; i<10; i++){
        fgets (lineBuf, sizeof(lineBuf), fp);
        char *line  = lineBuf;
        token=mystrsep(&line,"|\n"); //node
        token=mystrsep(&line,"|\n"); id=strtoul(token,NULL,0);//id
        token=mystrsep(&line,"|\n"); //name
        token=mystrsep(&line,"|\n"); //place
        token=mystrsep(&line,"|\n"); //highway
        token=mystrsep(&line,"|\n"); //route
        token=mystrsep(&line,"|\n"); //ref
        token=mystrsep(&line,"|\n"); //oneway
        token=mystrsep(&line,"|\n"); //maxspd
        token=mystrsep(&line,"|\n"); lat=strtod(token,NULL);//lat
        token=mystrsep(&line,"|\n"); lon=strtod(token,NULL);//lon
        printf("id=%lu lat=%f lon=%f\n",id,lat,lon);
    }

  return 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-30 17:29:02

也许你需要#include <stdlib.h>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20844013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档