c - (C) 从文本文件读取结构

标签 c struct scanf

我正在尝试将多个不同的数据类型(char、int、float)从文本文件直接读取到结构中。

readData() {
char filename[100];
int linesread;
int i = 0;

printf("Enter the assets text file that you wish to read: \n");
scanf("%s", filename);

if ((fp = fopen(filename, "r")) == NULL) {
    printf("Error opening data file\n");
    readData();
} else {
    while (fscanf(fp, "%s %c %s %lf %lf %d %d %d", &assets[i].name, &assets[i].type, &assets[i].location, &assets[i].longi, &assets[i].lati, &assets[i].speed, &assets[i].fuelTime, &assets[i].readyTime != EOF)) {
        i++;
    }
}
fclose(fp);
linesread = i;

for (i = 0; i < linesread; i++) {
    printf("%s %s %s %lf %lf %d %d %d\n", &assets[i].name, &assets[i].type, &assets[i].location, &assets[i].longi, &assets[i].lati, &assets[i].speed, &assets[i].fuelTime, &assets[i].readyTime);
}

这应该读出这个(当它决定合作时)并将其保存到结构中:

 Angle_Lifeboat L Angle 51.685 -5.102 25.0 600 120
 Angle_ILB L Angle 51.685 -5.102 25.0 180 30
 Broad_Haven_ILB L Broad_Haven 51.713 -5.113 25.0 180 30

而是阅读此内容

ngle_Lifeboat LAngle Angle 0.000000 0.000000 0.000000 4231936 4231940
Angle_ILB LAngle Angle 0.000000 0.000000 0.000000 4232008 4232012
Broad_Haven_ILB LBroad_Haven Broad_Haven 0.000000 0.000000 0.000000 4232080 4232084

我对 C 还很陌生,所以对我要宽容一些。我们将非常感谢您提供的任何帮助

编辑:结构-->

 typedef struct assets{
char name[25];
char type[1];
float longi;
float lati;
char location[20];
int speed;
int fuelTime;
int readyTime;
 } assets;

最佳答案

在 C 编程中,我确实认为已经有一个内置函数可以执行上述操作...... 尝试使用 fread http://www.tutorialspoint.com/c_standard_library/c_function_fread.htm

关于c - (C) 从文本文件读取结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20444455/

相关文章:

结构布局 : can't make a constructor to set the field I need

c++ - 为类成员函数的结构输入设置默认值

swift - 在 Swift 中使用结构进行 Duck 类型

c - scanf 导致无限循环

c - malloc on char** 读写错误

c - 在本地开发的 shell 中解析该行无法按预期工作

c - 按坐标到原点的距离对坐标数组进行排序

c - C 中的二项式系数

c - scanf() 没有返回正确数量的参数

c - 在 C 中更改了 boolean 类型的值