当使用strtok时,标准C函数atof返回分段错误

 2012-末日审判 发布于 2023-02-13 11:11

我有使用atof和strtok的问题.

#include // printf
#include // atof
#include // strtok

int main()
{
  char buf[256]="123.0 223.2 2314.2";
  char* tp;

  printf("buf : %s\n", buf);
  tp = strtok(buf," ");
  printf("tp : %g ", atof(tp));
  while (tp!=NULL) {
    tp = strtok(NULL," ");
    printf("%g ", atof(tp));
  }

  return 0;
}

我可以编译上面的代码,它不会返回任何错误或警告消息.但是当我执行"a.out"时,它会返回如下所示的分段错误.

78746 Segmentation fault: 11  ./a.out

我不知道是什么问题.正如我所见,上面的代码不会复合语法错误.

1 个回答
  • tp变为null时,你atof就可以了!

    像这样重写你的循环:

    int main()
    {
      char buf[256]="123.0 223.2 2314.2";
      char* tp;
    
      printf("buf : %s\n", buf);
      tp = strtok(buf," ");
      printf("tp :");
      while (tp!=NULL) {
        printf("%g ", atof(tp));
        tp = strtok(NULL," ");
      }
    
      return 0;
    }
    

    2023-02-13 11:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有