Scusate non sono sicuro di aver fatto un buon lavoro:

nell'header "ohlc.h" dichiaro un nuovo tipo detto ohlc come segue

codice:
#IFNDEF __OHLC_H
#DEFINE __OHLC_H

typedef struct myohlc{
       float open;
       float high;
       float low;
       float close;
}ohlc;

#ENDIF
e nel source voglio acquisire dei dati da file che passo da riga di comando (argv[1])

i dati sono scritti in 4 colonne e ciascuna riga contiene in seguenza open, high, low, close
è corretto il seguente source per cerare un array di struct del ripo ohlc che contenga i dati acquisiti dal file txt?
(ho usato lo stream del stdio perchè ancora sto capendo come funzionano le stream class del C++)

codice:
#IFNDEF __OHLC_CPP
#DEFINE __OHLC_CPP

#include <iostream>
#include <stdio.h>
#include <cmath>
#include "ohlc.h"


using namespace std;

int main(int argc, char **argv){
  int N, i=0;  
  FILE *stream;
  //ohlc --> typdef struct ohlc presente in ohlc.h, size = sizeof(float)*4
  ohlc* dati;
  cout << "inserire numero barre OHLC da acquisire: ";
  cin >> &N;
  
  dati = (ohlc*)calloc(N, sizeof(ohlc)); 
  
  //passo dati da terminale
  stream = fopen( "argv[1]", "r");
  
  //acquisisco file da argv[1]
  while( stream != NULL){
  scanf = ("%f%f%f%f", dati[i]->open, dati[i]->high, dati[i]->low, dati[i]->close));
  i++;
  }
  fclose(stream);
grazie mille

p.s. penso ci sia un problema con l'header....cioè praticamente eseguendo typdef in quel modo non ho capito se il nuovo tipo è myohlc o ohlc??? l'errore che mi dà è che -> operand in dati[i]-> non è un puntatore myohlc?