加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 字符串长度有限的字符串

发布时间:2020-12-16 09:44:41 所属栏目:百科 来源:网络整理
导读:如果我想将char数组中的前3个字符解析为double,忽略以下字符,我真的需要这样做吗? int main() { const char a[] = "1.23"; char *b = malloc(sizeof(char) * 4); memcpy(b,a,sizeof(char) * 3); b[3] = ''; printf("%fn",strtod(b,NULL)); // Prints 1.2
如果我想将char数组中的前3个字符解析为double,忽略以下字符,我真的需要这样做吗?

int main() {
    const char a[] = "1.23";
    char *b = malloc(sizeof(char) * 4);

    memcpy(b,a,sizeof(char) * 3);
    b[3] = '';

    printf("%fn",strtod(b,NULL)); // Prints 1.20000,which is what I want

    free(b);
}

是不是像strtod这样的函数允许你指定它应该搜索数字的最大字符串长度?

编辑:我希望它打印1.2(它目前正在做),而不是1.23!

解决方法

如果您始终只想考虑给定字符串中的三个第一个字符,则可以使用以下代码:

#include <stdio.h>
#include <string.h>

double parse_double(const char *str) {
  char *tmp = 0;
  double result = 0;

  asprintf(&tmp,"%.3s",str);
  result = strtod(tmp,0);
  free(tmp);

  return result;
}

int main(void) {
  printf("%fn",parse_double("1.23")); // 1.2
  printf("%fn",parse_double("1234")); // 123
  printf("%fn",parse_double("0.09")); // 0.0

  return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读