hilfe bau auslesen aus Dateien



  • hi,

    mein Problem sieht folgendermasen aus: ich möchte gerne aus einer Datei die einzelnen Zeichen auslesen und in ein Feld speichern, sodass ich sie nachher bearbeiten kann, ich habe bereits folgenden quelltext:

    #include<conio.h>
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>

    int main(int argc, char* argv[])
    {
    FILE *datei;
    char filename[255];

    //Falls die Datei zum öffnen nicht als Argument übergeben wurde...
    if(argc<2)
    {
    printf("Welche Datei wollen Sie öffnen: ");
    scanf("%s",filename);
    datei=fopen(filename, "r");
    if(datei!=NULL) {
    while((c=fgetc(datei))!=EOF) {
    //putchar(c);
    z1++;
    }
    }
    else
    printf("Datei konnte nicht geöffnet werden!\n");
    }
    else {
    datei=fopen(argv[1],"r");
    if(datei!=NULL) {
    while((c=fgetc(datei))!=EOF) {
    //putchar(c);
    z1++;
    }
    }

    else
    printf("Datei %s konnte nichtg geöffnet werden!\n",argv[1]);
    }
    zeichenfeld=(char) malloc(sizeof(z1));

    while(!feof(datei)){ //funktioniert nicht!!
    fgets(feldch,z1,datei);
    sscanf(feldch,"%d",feldch2[index]);
    printf("%d",feldch2[index]);
    printf("1");
    index++;
    }

    getch();
    return 0;
    }

    mir fehlt das auslesen und in ein Feld speicher, werke schon seit Tagen daran und komme nicht wieter! habe schon alle funktionen (fgetc, sscanf,...) kenne mich mit denen aber nicht sehr gut aus!
    Ich hoffe mir kann jemand helfen!!!!!

    mfg. max



  • Hallo,

    schau dir mal folgenden FAQ-Eintrag an:

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39469.html

    Was hier noch zu sagen ist, falls du die Klassen nicht kennst:

    std::vector<type> verhaelt sich wie ein Array, allerdings bist du nicht auf
    eine bestimmte groesse festgelegt. Er waechst dynamisch, du musst dich aber nicht um das Speichermanagement kuemmern. Zugriff funktioniert ebenfalls, wie
    bei einem Array:

    std::vector<std::string> strVec;
        //neue elemente dem vector hinzufuegen
        strVec.push_back("hallo ");
        strVec.push_back("welt!");
        //elemente ausgeben
        cout<<strVec[0]<<strVec[1];
    

    Bei std::string kannst du ebenfalls mittels des []-Operators auf die einzelnen
    Elemente zugreifen:

    std::string hw("hallo welt!");
        for(size_t i = 0; i < hw.size(); ++i)
            cout<<hw[i];
    

    Damit solltest du deine Aufgabe eigentlich loesen koennen. Falls du irgendwo
    Schwierigkeiten hast, einfach nochmal Fragen.

    mfg
    v R



  • zuerst mal danke für die schnelle antwort, leider sind mir die Quelltexte etwas zu unverständlich, da ich in C noch nicht so weit bin. Es gibt sicher eine Lösung mit den befehlen Zb. sscanf,... oder?!?



  • sscanf ist kein Befehl 🙂 Desweiteren glaube ich, dass du in C programmierst. (Was ich den headern und C-Funktionen entnehme). Wenn dem so sein sollte, warum postest du dann in einem C++-Forum?

    Wie gesagt. In C++ gibt es einfachere Möglichkeiten (siehe virtuell Realisticer's Post) aus Dateien zu lesen etc.

    Caipi



  • hmmm... mal nachdenke.... vielleicht weil ich in c++ programmiere?!?!?!?!?!!?!?
    c und c++ sind sich ja sehr ähnlich! oder täusche ich mich da!?!?!?
    Ich arbeite mit dem C++ Builder 4.
    Kennt jemand das Buch "C von A bis Z"?!?!? Eher in diese Richtung wäre mir eine Lösung wünschenswert! Da ich wie ja schon gesagt noch nicht so lange programmiere soll es nicht zu kompliziert sein!

    ich hoffe mir kann jemand helfen!



  • max_88 schrieb:

    hmmm... mal nachdenke.... vielleicht weil ich in c++ programmiere?!?!?!?!?!!?!?

    IMHO würden alle (fähigen) C++-Programmierer deinen obigen Code anders schreiben. D.h. nicht das dein Code schlecht oder ähnliches ist (habe ihn mir nicht durchgesehen und möchte deshalb kein Urteil abgeben; Bin mit den C-Funktionen außerdem auch nicht besonders vertraut), es ist nur so, dass er C-Code ist.

    c und c++ sind sich ja sehr ähnlich! oder täusche ich mich da!?!?!?

    Das ist richtig und falsch. Richtig insofern, dass die Syntax von C++ nahezu identisch mit der von C ist. Jedoch gibt es in C++ eine ganz andere Standard-Bibiothek. Diese hat soweit ich weiß recht wenig mit der Standard-Bibiothek aus C zu tun. (Konkret gesagt, es gibt ganz andere Stream-Funktionen bzw. Klassen, etc.)

    Ich arbeite mit dem C++ Builder 4.

    Das muss nicht zwangsläufig heißen, dass du in C++ programmierst. Wie gesagt, C++ ist zu C nahezu vollständig kompatibel und C++-Compiler können in den meißten Fällen auch C-Programme übersetzen (was umgekehrt viel seltener funktioniert).

    Caipi



  • ok, dann ist es halt ein C-code. Trotzdem helfen mir die bis jetzt vorgeschlagenen C-codes auch nicht viel! Es wird doch hier irgendjemanden geben der mir hier helfen kann anhand meines quelltextes mit einem mir verständlichen wissen?!!?!?


Anmelden zum Antworten