c - 在 C 中将 char 指针类型转换为 float

标签 c parsing casting

<分区>

我有一个包含 ff 数据的平面文件:

date;quantity;price;item

我想使用以下结构创建数据记录:

typedef struct {
  char * date, * item;
  int quantity;
  float price, total;
} expense_record;

我创建了以下初始化方法:

expense_record initialize(char * date, int quantity, char *price, char *item) {
  expense_record e;
  e.date = date;
  e.quantity = quantity;
  e.item = item;
  /* set price */
  return e;
}

我的问题是如何从 char *price 中将价格设置为 float(根据结构的要求)。我得到的最接近的,即没有产生编译器错误的是

 e.price = *(float *)price

但这会导致段错误。

谢谢!

最佳答案

您正在寻找 strtod strtof 库函数(包括 <stdlib.h> )。相关地,如果调用代码使用 strtoul 以外的任何内容转换 quantity从文本到 int ,这可能是一个错误(我能想到的唯一异常(exception)是,如果由于某种原因 quantity 可能为负数,那么您会需要 strtol)。

关于c - 在 C 中将 char 指针类型转换为 float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18699281/

相关文章:

c - C中的交替按位连接

c# - 将文本文件解析为字典

java - 未能在 java 泛型上强制类型

c - munmap_chunk() : invalid pointer

c - 将目录上下文传递给编译器

objective-c - PFFile 解析为 SWIFT

c++ - 构造 `long double` 右值

androidx Activity 无法转换为 AccountAuthenticatorActivity

c - int *a[3] 和 int (*a)[3] 之间的区别?

c++ - 在 C++ 中读取制表符分隔的文件