Frage zu "fread"



  • Hi Leute, Ich habe so ein Teil der programm geschrieben:
    /*--- In header datei---/
    struct instr{
    uint32_t i;
    int index;
    };
    /
    ----------*/

    int main(int argc, char *argv[]){

    FILE *inputfile =NULL;
    char *inputfilename =NULL;

    int blocksize =32; // default blocksize =32
    instr *buf;
    int x;

    //parsing parameter

    if((argc < 2) || (argc >5)){
    usage ();
    return -1;
    }
    while (i< argc){
    if (strcmp (argv[i],"-i") == 0) inputfilename = argv[++i];
    i++;
    }

    assert(inputfilename);
    //open input file for reading
    if ((inputfile = fopen(inputfilename, "rb"))==NULL){
    fprintf (stderr, "Error: Could not open %s for reading\n", inputfilename);
    return -1;
    }

    while (!feof(inputfile) {
    buf = (uint32_t ) malloc(sizeof(uint32_t ));
    buf [index] = fread(&x, blocksize/8, 1, inputfile);
    index ++;
    buf = (uint32_t
    )realloc(buf, sizeof(uint32_t
    )*index);
    buf[length] = fgetc(f); // Nächstes Zeichen auslesen
    ....
    }...

    Wie geht es, wenn Ich mehrere Zeilen nacheinander auslesen möchte:
    Zuerst 1 , dann 2, dann 3 ........

    2. Frage:
    Wie nenne Ich den End of File (EOF): #Instruktionen +1;

    Jede Instruktion: 32 Bit gross;

    Viele Grüsse

    Lena



  • In welcher Form stehen denn die Daten in deiner Datei? (binär wäre eine ziemlich kryptische Folge von Zeichen - da gibt es keine "Zeilen"; alternativ könnte ich mir noch vorstellen, daß sie als Binär- oder Hex-String in Textform vorkommen - in dem Fall ist fscanf() geeigneter zum Lesen)

    PS: Code-Tags bringen etwas Übersicht in deine Quelltexte 😉


Anmelden zum Antworten