You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用memcpy()将指针内数据复制到float数组?解决类型不兼容报错

问题解决:参数类型“float”与“void*”不兼容的错误处理

错误原因分析

你写的memcpy(Fquantity[ctr], amount, 5)存在两个核心问题:

  1. 类型不匹配:memcpy的第一个参数要求是void*(指针类型),但Fquantity[ctr]是float类型的变量,不是指针,这直接触发了编译器的类型不兼容报错。
  2. 逻辑错误:就算强制转换指针类型,amount是字符串形式的数字(比如"15.2"),直接用memcpy复制内存到float变量里也得不到正确数值——字符串是ASCII字符序列,和float的二进制存储格式完全不同,复制后只会得到乱码值。

正确解决方案

不需要用memcpy,直接把字符串转换成float类型后赋值给数组元素即可,修改关键代码如下:

amount = strtok_s(NULL, d, &next); 
printf("amount: %.1f\n", atof(amount));
// 替换原来的memcpy行,直接赋值转换后的float值
Fquantity[ctr] = atof(amount);

hos = strtok_s(NULL, d, &next);
printf("hospital: %s\n", hos);

可选优化:增加错误检查

如果要处理amount不是合法数字的情况(比如空字符串、非数字字符),可以用strtof代替atof,它能提供错误检测:

amount = strtok_s(NULL, d, &next); 
char *endptr;
float val = strtof(amount, &endptr);
if (endptr == amount) {
    // 转换失败,处理错误逻辑
    printf("无效的数值:%s\n", amount);
    val = 0.0f;
}
Fquantity[ctr] = val;
printf("amount: %.1f\n", val);

内容的提问来源于stack exchange,提问作者Beginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 04:06:25