Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Verschlüsselungsmethoden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ] [ 4 ]
010
30.10.2005, 15:16 Uhr
~erpel
Gast


Tja schade, also ich erkläre nochmals mein Problem, hofe jemand hat eine Lösung.
Wenn ich nur einmal auslese, was in der Datei steht, ist immer ein Zeichen zuviel, d.h er geht die Schleife 1mal zu oft durch, warum? Und wie kann ich das ändern? danke!

C++:
    int n = 0;
    ifstream datei_l (pfad); //zum Lesen öffnen  
    
    while ( datei_l.good())
    {
        
        datei_l.seekg(n);
        datei_l.get(original); //Zeichen holen          
        cout << original;    
        n++;
    }
    datei_l.close();

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
30.10.2005, 16:10 Uhr
(un)wissender
Niveauwart


Lesen einer Datei in einem Rutsch mit allen Zeichen.


C++:
#include <iostream>
#include <fstream>

int main()
{    
    std::ifstream in("test.txt", std::ios::in | std::ios::binary);
    std::ios::pos_type begin = in.tellg();
    in.seekg(0, std::ios::end);
    std::ios::pos_type end = in.tellg();    
    in.seekg(0, std::ios::beg);
    const unsigned SIZE = end - begin;
    char * buffer = new char[SIZE + 1];
    in.read(buffer, SIZE);
    buffer[SIZE] = 0;
    std::cout << "Gelesen: " << buffer;
    delete [] buffer;
}


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
31.10.2005, 09:10 Uhr
~DoppleR
Gast


Zunächst ist mir nicht klar, warum du seekg() und seekp() verwendest. Wenn ich das richtig sehe, willst du einfach nur die ganze Datei einlesen. Beim ausführen von datei_l.get(original); bzw. << wird beim nächsten Aufruf automatisch das nächste Zeichen gelesen/geschrieben. seekg() musst du nur verwenden, wenn du nicht am Anfang der Datei beginnen möchtest.

Ich würde es so machen:

C++:
    ifstream datei_l (pfad); //zum Lesen öffnen  
    ofstream datei_s (pfad,ios::in); //zum Schreiben öffnen
    datei_l.seekg(n); //hier die Anfangsposition einsetzen
    datei_s.seekp(m); //hier Anfangs-Schreibposition einsetzen
    
    if  ( datei_l.good()) datei_l.get(original); //erstes Zeichen holen

    while ( datei_l.good())
    {
        switch (original)
        {
            case 'a' : bild = 'r'; break;
            case 'b' : bild = '@'; break;
            case ' ' : bild = '_'; break;
            
        }
        cout << bild;

        datei_s << bild;
        datei_l.get(original); //Zeichen holen          
    }
    datei_l.close();
    datei_s.close();


Das letzte Zeichen in der Datei kommt daher, dass das Programm erst in der Schleife erfährt, dass es am Ende der Datei angekommen ist. Dann wird mit get(original) aber keine Änderung an original mehr vorgenommen. Es wird aber trotzdem ausgewertet.

Ich löse das normalerweise so, dass ich als erstes das erste Zeichen lese und in der Schleife die Weiterverarbeitung des Zeichens vor dem Einlesen des nächsten Zeichens kommt (siehe oben).
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
31.10.2005, 10:18 Uhr
~erpel
Gast


Also ich glaub ihr versteht mich nicht. Ich benutze doch die ganze Schleife und dieses seekg/p, nur, weil ich jedes mal nur ein Zeichen auslesen will. Ich will doch genauso bei jedem durchlauf das zeichen verschlüsseln. hab bloß erstmal zum Test damit angefangen die datei auszulesen nach der Methode, doch da ist immer eins zuviel dran!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
31.10.2005, 10:21 Uhr
~erpel
Gast


oh, bin grad am morgen noch n bisschen voll. hab jetzt erst gepeilt was du mir geschrieben hast. danke werd das mal ausprobieren, wusste nicht das er mit .get gleich das nächste Zeichen nimmt. thx
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
31.10.2005, 10:23 Uhr
predator



Nimm doch die Lösung von (un)wissender!
Da hast du ein Array und seine Größe, was willst du mehr?
--
Gruß
predator
Zitat von Edsger W. Dijkstra:
Es ist praktisch unmöglich, einem Studenten gutes Programmieren beizubringen, wenn er vorher in BASIC programmiert hat. Als potenzielle Programmierer sind sie geistig verstümmelt ohne Hoffnung auf Erholung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
31.10.2005, 19:11 Uhr
~erpel
Gast


so, hab mich jetzt für eine simple verschiebung entschieden.
Beim verschlüsseln klappt alles wunderbar, wenn ich nur eine Zeile habe, auch leerzeichen oder so machen kein Problem. Sobald ich aber ein Enter(zeilenumbruch) dazwischen habe, fängt er an zu spinnen. Dann hab ich am Schluss noch n paar zeichen zuviel dran.

C++:
    datei_l.get(original); //erstes Zeichen holen  
    
    while ( !datei_l.eof())
    {        
    asci = original;
    if (asci > 128) asci = 256 + asci;
    asci += 128;
    bild = asci;
    datei_s << bild;
        
    datei_l.get(original); //Zeichen holen
    }


also aus

Code:

a

a


wird

Code:

ኊá(jetzt ein zeichen, was hier im editor n zeilenumbruch hervorhebt, sieh aus wie n viereck)a


hoffe jemand kann helfen!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
31.10.2005, 19:11 Uhr
~erpel
Gast


oh, was macht der denn da^^? also jedenfalls kommt nicht das raus, was soll. ups, sry
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
31.10.2005, 20:39 Uhr
~erpel
Gast


hat denn noch keiner ein vergleichbares problem gehabt?
also sobald n Zeilenumbruch dabei ist, hängt er zu viele zeichen an, woran liegt das?
danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
01.11.2005, 12:49 Uhr
~Löwe84
Gast


Hey Leute!

Ich habe mal eine Frage!
Weiß jemand von euch, wie man RLED in C++ programmieren kann!
Oder hat es jemand vieleicht?
Ich bräuchte das nämlich mal, ist sehr wichtige!
Danke Schön!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ] [ 4 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: