读二进制结构化数据

时间:2014-10-11 21:44:21

标签: c++ c structure

我已经完成了编写代码,但无法找出错误的解决方案。我认为这很简单。

我有3个文件

grades.txt // contains 8 grades
grades.h // structure
grades.c // main

以下是该程序的描述

  1. 接受两个参数,1表示文件名grade.txt,1表示用户ID(ex.123)
  2. 显示成绩和平均成绩,直到我拥有所有8个成绩或达到否定成绩
  3. 将用户ID转换为数字uid
  4. 从offset(uid * sizeof(struct GR))
  5. 开始读取结构

    grades.h

    #ifndef GRADE
    #define GRADE
    struct GR {
        float gr[8];
    };
    #endif
    

    成绩。

    #include <stdio.h>
    #include "grades.h"
    int main(int argc, char *argv[]) {    
        struct GR *grades = melloc(sizeof(struct GR));
        FILE *file = fopen(argv[1], "rb");    
    
        // convert character uid into integer uid
        char *chUid = argv[2];
        int uid = 0;
        int len = strlen(chUid);
        for (int i = 0; i < len; i++) {
            uid = uid * 10 + (chUid[i] - '0');
        }
        printf("Converted uid: %d \n", uid);
    
        fread(grades, uid * sizeof(struct GR), 1, file);
    
        float total = 0, avg = 0;
        int i = 0;
        while (i < 9 && grades->gr[i] > 0) {
            printf("%d\n", grades->gr[i]);
            total += grades->gr[i];
            i++;
        }
        printf("Average: %d \n", total / i);        
        return 0;
    }
    

    我的错误消息是

    错误LNK2019:函数_main中引用的未解析的外部符号_melloc 错误LNK1120:1个未解析的外部

    ----更新------

    我添加了标题并更改了melloc和malloc的拼写错误,错误消失了但我仍然坚持使用fread方法.. struct没有任何价值

2 个答案:

答案 0 :(得分:0)

你有

  

错误LNK2019:未解析的外部符号_melloc在中引用   function _main

因为在C中分配内存的功能称为malloc而不是melloc(瓜可能; p):

void* malloc (size_t size);

您必须包含声明malloc的标头:

#include <stdlib.h>

答案 1 :(得分:0)

你的错误告诉了一切。

error LNK2019: unresolved external symbol _melloc referenced in function _main 它不是melloc,而是malloc