zeichenanzahl eines Strings ermitteln/Zeilenumbruch in .txt datei?



  • hi.
    ich baue gerade ein kleines tool zum erstellen einer wordlist.
    dazu bräuchte ich ein paar befehle:

    a)
    ich möchte, wenn ich mit r+ in eine .txt datei speichere, einen zielenumbruch hinbekommen...

    b)
    ich möchte die zeichenanzahl eines strings char-strings ermitteln.

    c)
    ok, wieder zum string:
    jemmand gibt ABC ein, wie Speichere ich dann:
    A= string[1]
    B= string[2]
    C= string[3]
    usw?

    btw. das zeug das ich bisher gemacht habe.
    damit kann ich vielleicht ungefähr zeigen, was ich vorhabe.
    ich "arbeite" mit dem Borland c++ builder 6 (enterprise)

    //---------------------------------------------------------------------------
    #include <iostream.h>
    #include <vcl.h>
    #include <conio.h>
    #include <stdio.h>
    #include <iostream.h>
    #include <stdio.h>
    #include <conio.h>
    #pragma hdrstop
    
    //---------------------------------------------------------------------------
    
    #pragma argsused
    
    int combos;
    int words;
    char *zeichen;
    
    int main(int argc, char* argv[])
    {
    FILE *MeineDatei;
    MeineDatei = fopen("C://temp.txt", "r+");
    
    zeichen = new char[500];
            cout << "Welche Zeichen sollen benutzt werden(max.500 verschiedene)?" << endl;
            gets(zeichen);
            cout << "Wie viele Kombinationen sollen enthalten sein?" << endl;
            cin >> combos;
            cout << "Aus wievielen Buchstaben soll jede Kombination bestehen?" << endl;
            cin >> words;
            cout << "Zurücklehnen, Enter drücken, und Entspannen" << endl;
            system("pause");
            do
            {
            fputc('a', MeineDatei);
            cout << "Noch " << combos << endl;
            combos=combos-1;
            system("cls");
            }
            while(combos != 0);
            fclose(MeineDatei);
            system("Pause");
            delete zeichen;
            return 0;
    }
    


  • Hallo

    Du hast den Borland Builder, bindest die vcl.h ein, die dir den Zugriff auf die umfangreichen Klassen der VCl bieten (u.a. TStringList, TFileStream, AnsiString)...
    Du bindest iostream.h (doppelt und auch noch falsch geschrieben) ein, und benutzt nicht gleich noch fstream...

    sondern stattdessen benutzt du für die deine Möglichkeiten veralterten C-Funktionen und Datentypen. Das ganze postest du dann im C++ Forum.

    Du solltest besser erstmal noch ein Tutorial für aktuelle C++ Grundlagen durchnehmen.

    bis bald
    akari



  • ohne dir jetzt ans bein pissen zu wollen:

    akari schrieb:

    Hallo

    Du hast den Borland Builder, bindest die vcl.h ein, die dir den Zugriff auf die umfangreichen Klassen der VCl bieten (u.a. TStringList, TFileStream, AnsiString)...

    ich habe bis vor kurzem noch Def C++ benutzt.
    ch mag AnsiString ehrlich gesagt nicht, sie ist mit vielen funktionen nicht kompatibel, und ich habe keinen bock meine Strings in ein anderes Format zu konvertieren.

    akari schrieb:

    Du bindest iostream.h (doppelt und auch noch falsch geschrieben) ein, und benutzt nicht gleich noch fstream...

    iostream.h - so steht es eben in dem tut, das ich benutzt habe.
    ich habe gerae extra nocheinmal geschaut.
    zu dem doppelt:
    es mag seltsam klingen, doch die konsole erscheint bei dem projekt nicht,
    wenn es nur einmal includet wird.
    KA warum

    akari schrieb:

    sondern stattdessen benutzt du für die deine Möglichkeiten veralterten C-Funktionen und Datentypen. Das ganze postest du dann im C++ Forum.

    tja, so habe ich es eben gelernt.
    wenn du ein forum hättest, in das es besser passen würde wäre ich natürlich jederzeit offen, es auch dort zu posten.

    akari schrieb:

    Du solltest besser erstmal noch ein Tutorial für aktuelle C++ Grundlagen durchnehmen.

    bis bald
    akari

    sag mir, wo ich soetwas finde, und ich bin bereit es 10x durchzulesen.
    ich habe schon ewig gebraucht, um das zu finden, dessen inhalt ich hier angewendet habe.

    sry das ich das so sagen muss, aber wirklich weiter bringt mich hier ganz ehrlich nichts,
    trotzdem danke.



  • http://tutorial.schornboeck.net/inhalt.htm

    Schau dir auch mal oben rechts den Link "Tutorials" an.



  • vale schrieb:

    ich habe bis vor kurzem noch Def C++ benutzt.
    ch mag AnsiString ehrlich gesagt nicht, sie ist mit vielen funktionen nicht kompatibel, und ich habe keinen bock meine Strings in ein anderes Format zu konvertieren.

    Es geht nicht darum ob dir AnsiString oder VCL gefällt. Es geht darum das wenn du nicht etwas aus der VCL benutzt, du den Include nicht brauchst. Sprich : Wenn du ein neues Projekt mit dem Konsolenexperten erstellst, dann kannst du die Option VCL benutzen deaktivieren

    iostream.h - so steht es eben in dem tut, das ich benutzt habe.
    ich habe gerae extra nocheinmal geschaut.
    zu dem doppelt:
    es mag seltsam klingen, doch die konsole erscheint bei dem projekt nicht,
    wenn es nur einmal includet wird.
    KA warum

    Das Turorial was du benutzt ist veraltet, denn es muß
    #include <iostream>
    heißen, und einmal reicht in jedem Fall aus.
    Ich vermute du hast eher Probleme das dein Programm ohne weitere Nachfrage beendet. Wie du das beheben kannst steht in der Konsolen-FAQ im Thema Automatisches Schließen verhindern.

    tja, so habe ich es eben gelernt.
    wenn du ein forum hättest, in das es besser passen würde wäre ich natürlich jederzeit offen, es auch dort zu posten.

    Wenn du reines C++ lernen willst, dann bis du hier schon richtig. Wenn du reines C schreibeb willst, dann wirst du in Ansi-C Forum verschoben.

    sag mir, wo ich soetwas finde, und ich bin bereit es 10x durchzulesen.
    ich habe schon ewig gebraucht, um das zu finden, dessen inhalt ich hier angewendet habe.
    sry das ich das so sagen muss, aber wirklich weiter bringt mich hier ganz ehrlich nichts

    Das hat ja schon Michael übernommen. Das hättest du aber auch selber finden können, auch schon vor dem Erstellen des Threads.

    bis bald
    akari



  • int combos=0;
    int words;
    int anzahl;
    int anzahl2;
    int absatz=0;
    char *zeichen;
    #pragma argsused
    int main(int argc, char* argv[])
    {
    zeichen = new char[500];
            cout << "Welche Zeichen sollen benutzt werden(max.500 verschiedene)?" << endl;
            gets(zeichen);
            cout << "Bitte gebe die exakte Anzahl der Zeichen an. DIes ist enorm wichtig, da die Liste sonst nicht die " << endl << "gewuenschten Anforderungen erfuellt." << endl;
            cin >> anzahl;
            cout << "Wie viele Kombinationen sollen enthalten sein?" << endl;
            cin >> combos;
            cout << "Aus wievielen Buchstaben soll jede Kombination bestehen?" << endl;
            cin >> words;
            words=words-1;
            cout << "Zurücklehnen, Enter drücken, und Entspannen" << endl;
            system("pause");
            do
            {
            anzahl2=random(anzahl);
            cout << zeichen[anzahl2]; // hier soll daszeichen in die datei gespeichert werden
    
            if (absatz==words)
            {
            cout << endl;  // an dieser stelle soll in der datei ein zeilenumbruch erzeugt werden
            combos=combos-1;
            absatz=0;
            }
            else
            {
            absatz=absatz+1;
            }
            }
            while(combos != 0);
            system("Pause");
            delete zeichen;
            return 0;
    }
    //---------------------------------------------------------------------------
    

    ok, danke.
    ich habe das ganze jetzt sogut wie fertig gestellt, bloß an den zwei stellen, die mit kommentaren versehen sind, bräuchte ich noch die befehle um:

    a) schnell zu speichern, der inhalt der datei, die beschrieben wird soll dabei nicht ersetzt werden.

    b)in der datei einen zeilenumbruch zu erzeugen.

    hätte jemmand die befehle um dies durchzuführen?
    danke.



  • #include <fstream>
    
    // ...
    
    fstream f ("dateiname.txt");
    
    // benutzen
    
    f.close ();
    

    f kann dann genauso verwendet werden wie cout. Benutz aber für den Zeilenumbruch nur '\n', sonst wird jedes mal in die Datei geschrieben, wenn du einen Zeilenumbruch einfügst ((endl) entspricht ('n' << flush)).
    Zu a) bleibt nur zu sagen, dass dich das nicht im geringsten interessieren braucht. Diese Aufgabe nimmt dir das Betriebssystem ab.



  • #include <conio>
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    string zeichen;
    int combos,words;
    cout << "Welche Zeichen sollen benutzt werden(max.500 verschiedene)?" << endl;
    cin >> zeichen;
    cout << "Wie viele Kombinationen sollen enthalten sein?" << endl;
    cin >> combos;
    cout << "Aus wievielen Buchstaben soll jede Kombination bestehen?" << endl;
    cin >> words;
    cout << "Zurücklehnen, Enter drücken, und Entspannen" << endl;
    getch();
    ofstream file("temp.txt", ios::out|ios::app);
    if (file.is_open())
    {
       srand(time(0));
       while(combos--)
       {
          for(int i=0;i<words;i++) file << zeichen[rand()%zeichen.length()];
          file << '\n';
       }
       file.close();
    }
    getch();
    return 0;
    }
    

Anmelden zum Antworten