Mein erster Dateibrowser



  • Also das ist mein sehr einfacher "Dateibrowser".

    Ich bin auch noch nicht so weit mit C, immerhin konnte ich das aus dem Kopf schreiben.

    Meine Frage wäre, ob ich die Fputs Funktion so beeinflussen kann, dass der angezeigte Text ebenfalls eingerückt ist. Wie bei den anderen Printf Funktionen mit \t.

    Ich vermute aber das dies schlichtweg auf diesem Weg nicht möglich ist.
    Naja mal schauen.

    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <string.h>
    
      int main(int argc, char *argv[]){
    
     FILE *f;
     char TEXT[600];
     char file_name[255];
     int z=1;
     char ende;
    
        system("color 0D");
    
    while(z==1){
     system("cls");
     printf("\n\n\tWie soll die Textdatei heissen die du oeffnen willst:\n\n");
     printf("\tZ.b: C:\\users\\Benutzer\\desktop\\test.txt  (Achtung!Slash doppelt benutzen)\n\n\t--> ");
     scanf("%s", &file_name);
    
     fflush(stdin);
    
     f= fopen(file_name,"r");
     if(f==NULL){
        printf("\n\tFehler bei der Dateisuche,pruefe deinen Pfad!\n\n\tPress  'Q'  to Quit\n\tAny other for Again\n\t");
        ende=getch();
        if(ende=='q'||ende=='Q'){z=0;}
     }
        else{
    
         printf("\n\tAusgelesene Datei : (\"%s\")\n\n\n",file_name);
         while(fgets(TEXT,sizeof(TEXT),f)!=0)
    
         system("\tpause");
         int auswahl=0;
         int groesse;
         char aendern[600];
         printf("\n\twas moechten Sie nun mit der datei anstellen?\n\n\t1 = Zeichenanzahl ermitteln.\n\t2 = Datei ergaenzen.\n\t3 = Inhalt anzeigen.\n\t");
         if(scanf("%d", &auswahl)!=1){printf("\n\tfehler bei der eingabe\n");system("pause");fflush(stdin);};
         fflush(stdin);
         switch(auswahl){
         case 1: groesse=strlen(TEXT);printf("\tAnzahl der Zeichen : %d\n\n", groesse-1);system("pause");fclose(f);break;
         case 2: fgets(aendern,sizeof(aendern),stdin);
                 printf("\n\Hinzugefuegter Text : %s\n\n", aendern);
                 fclose(f);
                 f=fopen(file_name,"w+");
                 system("pause");
                 fputs(aendern,f);fclose(f);break;
         case 3: fputs(TEXT,stdout);fclose(f);system("pause");break;
         default:break;
          }
    
        }
    
     }
        return 0;
     }
    Code
    

    Mfg Zwen



  • du kannst Strings einrücken, dem du vorher einfach ein Tabulatorzeichen mit printf o.Ä. ausgibst.

    systemaufrufe kannst du erstmal benutzen, aber es gibt auch andere möglichkeiten, diese funktionen zu erreichen. system() solltest du (außer vielleicht jetzt zum üben) nicht verwenden.

    außerdem schreibt man nichts aus dem kopf. man schreibt sich das vorher auf, malt sich ein flußdiagramm und tippt das dann ein. gewöhn es dir gleich an!



  • Das habe ich mir schon fast gedacht, ich sollte demnächst auch an die Speicherreservierung denken schätze ich mal.

    An ein Flußdiagramm habe ich bis jetzt ehrlich gesagt noch nicht gedacht, da ich ja noch ziemlich am Anfang bin. Ich Bin jetzt gerade mit den Grundlagen bzw. mit dem Buch von Juergen Wolf fertig.

    Danke für die Hilfe, ich werde den "Browser" noch ein bisschen erweitern und dann mal schauen, was ich als nächstes mir vornehme. Was ich mir vorstellen kann, dass ganze vielleicht in Verbindung mit Wxwidgets, dazu müsste ich aber erst einmal die Funktionen von Wxw mir aneignen 🙂 .

    Bevor ich zu Wxw kam, wollte ich das ganze mit Visual Studio 2017 und C++||C#
    anfangen. Mir erschien das ganze ein wenig einfacher mit der ganzen Umgebung.

    Kommt mir das nur so vor oder ist das nur auf den ersten Bliock so?
    Benutze ansonsten Codeblocks.Windows 7,64Bit.



  • Wade1234 schrieb:

    außerdem schreibt man nichts aus dem kopf. man schreibt sich das vorher auf, malt sich ein flußdiagramm und tippt das dann ein.

    Das haben sie wohl vor 40 Jahren so gemacht. 😃


  • Mod

    Zwen++ schrieb:

    An ein Flußdiagramm habe ich bis jetzt ehrlich gesagt noch nicht gedacht, da ich ja noch ziemlich am Anfang bin. Ich Bin jetzt gerade mit den Grundlagen bzw. mit dem Buch von Juergen Wolf fertig.

    Dann ist der nächste Schritt leider, alles wieder zu vergessen und von vorne anzufangen:
    https://www.c-plusplus.net/forum/272350

    Nein, das ist kein Scherz, sondern Ernst. Man sieht deinem Code unmittelbar an, dass du nach Jürgen Wolf gelernt hast.



  • SeppJ schrieb:

    Zwen++ schrieb:

    An ein Flußdiagramm habe ich bis jetzt ehrlich gesagt noch nicht gedacht, da ich ja noch ziemlich am Anfang bin. Ich Bin jetzt gerade mit den Grundlagen bzw. mit dem Buch von Juergen Wolf fertig.

    Dann ist der nächste Schritt leider, alles wieder zu vergessen und von vorne anzufangen:
    https://www.c-plusplus.net/forum/272350

    Nein, das ist kein Scherz, sondern Ernst. Man sieht deinem Code unmittelbar an, dass du nach Jürgen Wolf gelernt hast.

    Also ich wusste das mein Code schlimm ist, aber ich dachte eher auf Grund der wenigen "Wege" die ich kenne. Ist das so schlimm? Könnt Ihr mir dann ungefähr sagen wie es besser aussehen würde? Mehr Pointer bzw. individuelle Speicherreservierung? Also mir ist schon klar, dass die Arrays hier Haufen Speicher fressen, aber ich schätze es haengt an mehr oder?

    Mir wurde bereits zu einem Englischsprachigen Buch geraten. Da wird wohl auch kein weg daran vorbei führen. Oder mit Python jetzt anfangen, das Buch liegt da(Dieses mal nicht von Juergen^^).



  • SeppJ schrieb:

    Zwen++ schrieb:

    An ein Flußdiagramm habe ich bis jetzt ehrlich gesagt noch nicht gedacht, da ich ja noch ziemlich am Anfang bin. Ich Bin jetzt gerade mit den Grundlagen bzw. mit dem Buch von Juergen Wolf fertig.

    Dann ist der nächste Schritt leider, alles wieder zu vergessen und von vorne anzufangen:
    https://www.c-plusplus.net/forum/272350

    Nein, das ist kein Scherz, sondern Ernst. Man sieht deinem Code unmittelbar an, dass du nach Jürgen Wolf gelernt hast.

    Ein wenig unstrukturiert, aber die Codes von Einsteigern sehen letztlich alle so ähnlich aus. Das soll jetzt aber nicht dem Wolf-Makel schmälern, der dem Zwen anhaftet.


  • Mod

    Zwen++ schrieb:

    SeppJ schrieb:

    Zwen++ schrieb:

    An ein Flußdiagramm habe ich bis jetzt ehrlich gesagt noch nicht gedacht, da ich ja noch ziemlich am Anfang bin. Ich Bin jetzt gerade mit den Grundlagen bzw. mit dem Buch von Juergen Wolf fertig.

    Dann ist der nächste Schritt leider, alles wieder zu vergessen und von vorne anzufangen:
    https://www.c-plusplus.net/forum/272350

    Nein, das ist kein Scherz, sondern Ernst. Man sieht deinem Code unmittelbar an, dass du nach Jürgen Wolf gelernt hast.

    Also ich wusste das mein Code schlimm ist, aber ich dachte eher auf Grund der wenigen "Wege" die ich kenne. Ist das so schlimm? Könnt Ihr mir dann ungefähr sagen wie es besser aussehen würde? Mehr Pointer bzw. individuelle Speicherreservierung? Also mir ist schon klar, dass die Arrays hier Haufen Speicher fressen, aber ich schätze es haengt an mehr oder?

    Das kann man nicht mit ein paar Schlagworten reparieren. Jürgen Wolf ist einfach ein schlechter Programmierer an sich, und von C hat er auch keine Ahnung. Was ziemlich schlecht ist, da sich C von Profis an Profis richtet und nicht an Möchtegernprogrammierer mit Halbwissen. Und dann schreibt dieser Möchtegernprogrammierer mit Halbwissen auch noch ein Buch darüber, und verbreitet sein sogenanntes Wissen weiter…


  • Mod

    Fricky667 schrieb:

    Ein wenig unstrukturiert, aber die Codes von Einsteigern sehen letztlich alle so ähnlich aus.

    Weil die überwiegend bei schlechten Lehrern lernen! Nur weil viele Leute etwas falsch machen, wird's dadurch nicht richtig. Guck dir mal im Gegensatz dazu an, wie ein Anfänger programmiert, der K&R gelesen hat. Das schaut schon ganz anders aus.



  • SeppJ schrieb:

    Zwen++ schrieb:

    SeppJ schrieb:

    Zwen++ schrieb:

    An ein Flußdiagramm habe ich bis jetzt ehrlich gesagt noch nicht gedacht, da ich ja noch ziemlich am Anfang bin. Ich Bin jetzt gerade mit den Grundlagen bzw. mit dem Buch von Juergen Wolf fertig.

    Dann ist der nächste Schritt leider, alles wieder zu vergessen und von vorne anzufangen:
    https://www.c-plusplus.net/forum/272350

    Nein, das ist kein Scherz, sondern Ernst. Man sieht deinem Code unmittelbar an, dass du nach Jürgen Wolf gelernt hast.

    Also ich wusste das mein Code schlimm ist, aber ich dachte eher auf Grund der wenigen "Wege" die ich kenne. Ist das so schlimm? Könnt Ihr mir dann ungefähr sagen wie es besser aussehen würde? Mehr Pointer bzw. individuelle Speicherreservierung? Also mir ist schon klar, dass die Arrays hier Haufen Speicher fressen, aber ich schätze es haengt an mehr oder?

    Das kann man nicht mit ein paar Schlagworten reparieren. Jürgen Wolf ist einfach ein schlechter Programmierer an sich, und von C hat er auch keine Ahnung. Was ziemlich schlecht ist, da sich C von Profis an Profis richtet und nicht an Möchtegernprogrammierer mit Halbwissen. Und dann schreibt dieser Möchtegernprogrammierer mit Halbwissen auch noch ein Buch darüber, und verbreitet sein sogenanntes Wissen weiter…

    Wolf kennt C noch aus DOS-Zeiten, wo fflush(stdin) und conio.h noch sexy waren. Und dieses C lehrt er seine Leser. Vielleicht hockt er selber noch vor einer Windows95-Kiste, wo er seine Beispiele testet.



  • Naja dann werde ich wohl Wolfgang sein Buch verbrennen und mir Python zu Gemüte führen. Das K&K Buch werde ich mir dann bei naechster Gelegenheit zulegen.

    Danke für die ausführliche Erläuterung und eure Hilfe.

    EDIT: Oder doch vielleicht K&R?



  • SeppJ schrieb:

    Fricky667 schrieb:

    Ein wenig unstrukturiert, aber die Codes von Einsteigern sehen letztlich alle so ähnlich aus.

    Weil die überwiegend bei schlechten Lehrern lernen! Nur weil viele Leute etwas falsch machen, wird's dadurch nicht richtig. Guck dir mal im Gegensatz dazu an, wie ein Anfänger programmiert, der K&R gelesen hat. Das schaut schon ganz anders aus.

    Okay, aber K&R ist meiner Meinung nach nicht für Anfänger mit null Vorwissen geeignet. Hätte sich der Zwen K&R als erstes C-Lehrbuch geholt, hätte er vermutlich keinen Bock mehr auf C und sich einer anderen Sprache zugewandt.



  • Zwen++ schrieb:

    Naja dann werde ich wohl Wolfgang sein Buch verbrennen und mir Python zu Gemüte führen.

    Vergiss Python. Bleib bei C, aber vergiss auch den Wolf. C ist schon cool. C ist sozusagen die Mutter vieler heute eingesetzter Programmiersprachen. 🙂



  • Dann werde ich wohl mir K&R zulegen.

    Habe mich gerade bisschen durch den einen Thread über Juergen W. gewühlt.

    In dem Buch gibt es ein Kapitel über Funktionen mit Pointern, in dem Kapitel davor hieß es noch dass, Pointer nur eine Adresse beinhalten können.

    Funktionen mit Pointern sind mir auch irgendwie schwer gefallen. Also ich wusste nicht genau, was ich jetzt eigentlich mache, wenn ich sie benutzt habe.

    Echt ärgerlich so etwas -.-


  • Mod

    Python bietet ganz sicher den schnelleren Erfolgsfaktor. Man muss schon ein ziemlicher Python-Profi sein, um die Schwachstellen der Sprache überhaupt zu erkennen. Bei C ist es ziemlich genau umgekehrt: Die Einstiegshürde ist enorm und man weiß die Sprache erst so richtig zu schätzen, wenn man sie wirklich gut beherrscht.

    Ich kenne durchaus Leute, die direkt mit K&R angefangen haben, sogar ohne vorherige Programmiererfahrung. Die haben dann auch richtig tollen Code geschrieben. Man sollte aber vielleicht dazu sagen, dass das 1. ziemlich kluge Leute waren und 2. dass sie C lernen mussten, also niemals die Wahl hatten, aufzugeben.

    @Zwen++: Hang dich nicht zu sehr an den Zeigern auf. Ein Programm wird nicht besser oder schlechter, weil es Zeiger beinhaltet. Bei Jürgen Wolf lernst du einfach nicht, in den Strukturen und Mustern zu denken, die beim Programmieren in C (oder allgemein) gefragt sind. Aber ja, er macht auch vieles technisch falsch.



  • SeppJ schrieb:

    @Zwen++: Hang dich nicht zu sehr an den Zeigern auf. Ein Programm wird nicht besser oder schlechter, weil es Zeiger beinhaltet. Bei Jürgen Wolf lernst du einfach nicht, in den Strukturen und Mustern zu denken, die beim Programmieren in C (oder allgemein) gefragt sind. Aber ja, er macht auch vieles technisch falsch.

    Das höre ich gerne. Ich hatte zwischen durch daran auch mal gedacht das Thema auch zu überspringen. Aber es hieß überall (auch im Buch), wer Pointer versteht, der hat C im großen und ganzen eigentlich kapiert bzw. sind die Themen danach nicht mehr allzu anspruchsvoll. Deswegen habe ich mich jetzt selbst durch den Fleischwolf gezogen 🙄 .



  • Zwen++ schrieb:

    Aber es hieß überall (auch im Buch), wer Pointer versteht, der hat C im großen und ganzen eigentlich kapiert bzw. sind die Themen danach nicht mehr allzu anspruchsvoll.

    Naja, das ist nur die halbe Wahrheit. Indirektion haste in vielen Sprachen, wenn auch versteckt. C's wirkliche Stärke ist seine Maschinennähe. Der Abstraktionsgrad von C ist sehr gering, weshalb C überall dort eingesetzt wird, wo schlanke und schnelle Programme wichtig sind (Embedded Systems mit wenig Memory und Taktfrequenz). Man sagt, C sei eine Art plattformunabhängige Assemblersprache. Googletip: "Spirit of C".



  • Zwen++ schrieb:

    Das habe ich mir schon fast gedacht, ich sollte demnächst auch an die Speicherreservierung denken schätze ich mal.

    nein du musst jetzt "c standardbibliothek" in die suchmaschine eingeben und dir eine funktion raussuchen, mit der du das Tabulatorzeichen '\t' und den eigentlichen string in einen neuen string einfügen kannst.

    An ein Flußdiagramm habe ich bis jetzt ehrlich gesagt noch nicht gedacht, da ich ja noch ziemlich am Anfang bin. Ich Bin jetzt gerade mit den Grundlagen bzw. mit dem Buch von Juergen Wolf fertig.

    also es ist einfacher, erst flussdiagramme (oder pseudocode geht auch) zu erstellen und anhand dieser dann den code zu entwickeln.

    Danke für die Hilfe, ich werde den "Browser" noch ein bisschen erweitern und dann mal schauen, was ich als nächstes mir vornehme. Was ich mir vorstellen kann, dass ganze vielleicht in Verbindung mit Wxwidgets, dazu müsste ich aber erst einmal die Funktionen von Wxw mir aneignen 🙂 .

    du kannst ja auch die win32api nehmen. das ist weiterhin c.

    Fricky667 schrieb:

    Das haben sie wohl vor 40 Jahren so gemacht. 😃

    du bist bestimmt so einer, der eine platine einfach mit irgendwas bestückt und dann hofft, dass es dann funktioniert. 🙄



  • Wade1234 schrieb:

    du bist bestimmt so einer, der eine platine einfach mit irgendwas bestückt und dann hofft, dass es dann funktioniert. 🙄

    Irgendwann ist in der Tat der Zeitpunkt gekommen, wo man das tun muss. 🙂



  • Fricky667 schrieb:

    Irgendwann ist in der Tat der Zeitpunkt gekommen, wo man das tun muss. 🙂

    ja aber nicht wenn man gerade angefangen hat, eine programmiersprache zu lernen.


Anmelden zum Antworten