c - 在C中将值从文件存储到结构数组
问题描述
我正在尝试从我的文本文件中读取值并将它们存储在结构数组中。我的文本文件有这些值:
名称.txt
Num_of_rec: 5
3 7 10 1 red
5 6 8 2 red
9 9 16 5 blue
13 4 19 2 green
12 8 15 4 blue
到目前为止,我的代码是这样的:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define ERROR -1
#define MAXLEN 256
struct Point {
float x;
float y;
};
struct Rectangle {
struct Point top_left;
struct Point bottom_right;
char color[7];
};
int main() {
int i, N;
char junk[MAXLEN];
struct Rectangle *data;
FILE *fp;
fp = fopen("names.txt", "r");
fscanf(fp,"%s %d\n",junk,&N);
printf("No: %d", N);
data = (struct Rectangle *) malloc(N*sizeof(struct Rectangle));
for(i=0; i<N; i++) {
fscanf(fp, "%lf %lf %lf %lf %s", data[i].top_left.x, data[i].top_left.y, data[i].bottom_right.x, data[i].bottom_right.y);
}
return 0;
}
我想将所有这些值添加到结构数组(数据)中,但我不知道如何正确执行此操作。到现在为止的输出是:
No: 5
它只是崩溃。我不明白问题是我用来从文件中读取值并将它们存储到结构数组或其他东西的方法。
解决方案
fscanf(fp, "%lf %lf %lf %lf %s", data[i].top_left.x, data[i].top_left.y, data[i].bottom_right.x, data[i].bottom_right.y);
存在以下三个问题fscanf
:
- fscanf 接受指针,你传入值
- fscanf 需要 5 个指针,您只提供 4 个值。
- 格式说明符
%lf
需要一个指向double
类型的指针
将上述语句更改为以下语句应该可以解决崩溃问题。
fscanf(fp, "%f %f %f %f %s", &data[i].top_left.x, &data[i].top_left.y, &data[i].bottom_right.x, &data[i].bottom_right.y, data[i].color);
推荐阅读
- javascript - 使用 Angular JS 数据表在其中一列中添加 Jquery datepicker
- verilog - 如何在不使用时钟的情况下在verilog中生成PWL或脉冲
- vba - 如何判断段落的开头
- php - 使用 PHP 为每个 mysql 表行生成单独的 XML 文件
- css - 与 Bootstrap 文档站点的样式相同
- google-cloud-dataflow - 数据流来处理批处理和流消息的延迟和乱序数据?
- sql - 如何使用 Like 运算符将一个表中的字符串匹配到另一个表中的子字符串
- angular - 使用 BingMap 的应用程序的 Angular 5“ng 测试”失败
- javascript - 无法在 reactjs 中的 componentDidMount 中调用 loaction.state
- powershell - New-PSSession - WinRM 无法处理请求