Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Textbearbeiten

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 <
000
07.10.2003, 15:44 Uhr
~kllow
Gast


Hab hier schon mal vor ein paar wochen gepostet und inzwischen nomol an meinem prog rumgebastelt naja das ist zumindest dabei rausgekommen:

C++:
#include <iostream.h>
#include <fstream.h>
#include <string.h>

ofstream fout("kopie.txt"); // zum Schreiben oeffnen
ifstream fin("Bearbeiten.txt");
        
const int buffer = 1;
char ch[buffer + 1];
char *pSource = ch;

class Klammersuche
{
public:    
    Kla(char*);
};

Klammersuche::Kla(char* pDest)
{
    char* strcpy(char *pDest, const char *pSource);
    
        while(1)
        {
            if(pDest[0] == '{')
            {
                fout << "\n{\n";
                return 0;/*wird das prog hier abgebrochen oder geht er da nur aus der schleife raus?*/
            }
            else
            {
                fout << pDest;
            }
        }
}


class Textbearbeiten
{
public:
    bearbeiten(char*);
};

Textbearbeiten::bearbeiten(char* rrch)
{
    char* strcpy(char *rrch, const char *pSource);

        while(1)
        {
            fout << "\t";
            while(fin.getline(rrch,1) != '\n') /*<--Fehler
                                                                          weis aber net warum*/

            {
                if (rrch[0] == '{')
                {
                Textbearbeiten::bearbeiten(char* rrch);
                }
                else if (rrch[0] == '}')
                {
                    return 0;
                }
                else
                {
                    fout << rrch;
                }
            }
        }
}



int main(int argc, char **argv)
{
    Klammersuche::Kla(ch);
    Textbearbeiten::bearbeiten(ch);
    return 0;
}




also das prog soll mir den text(quelltext) in ner datei ordnen
allerdings funktioniert das noch nicht so recht.
würd mich über tips/ratschläge zu den fehlern im prog freuen.
komm leider alleine irgendwie net weiter
aber bitte nix mit std::x weil das bei mir irgendwie net funkt und i es damit nicht peile.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.10.2003, 16:07 Uhr
virtual
Sexiest Bit alive
(Operator)


So Funktionsprototypen

C++:
char* strcpy(char *rrch, const char *pSource);


Sind überflüssig, du hast doch schon den Header included...

C++:
Klammersuche::Kla(char* pDest)


Soll sich der Compiler "mmersuche" selbst dazu dichten, oder was ist die Intention? - Der Compiler dichtet nicht!

Weitere Fehler (sind noch einige andere drin) bitte jemand anders, ich bin knapp an Zeit heute.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 07.10.2003 um 16:07 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.10.2003, 21:37 Uhr
kllow



@ virtual
ich hatte da eigentlich vor die methode Kla aus der Klasse Klammersuche aufzurufen und zu deklarieren bzw ihr ne aufgabe geben.

verratet mir mal noch ein paar fehler
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.10.2003, 00:20 Uhr
virtual
Sexiest Bit alive
(Operator)


Dann solltest Du aber der Methode Kla auch einen Returntype (und sei es void) spendieren. Das das soweit durch den Compiler gehen soll, wundert mich.
Naja und dann:

C++:
// So, wie Du rrch im folgenden Verwendest, ist es sehr Fraglich, ob das Programm nicht
// füher oder Später den Abgang macht: Eigentlich ist mit noch nicht einmal klar geworden,
// warum du rrch als parameter übergibst. Ist es Dir klar? - Wenn ja, mach mich schlau ;)
// Textbearbeiten::bearbeiten(char* rrch)
{
        while(1)
        {
            fout << "\t";
// In der folgenden Zeile ist ein Fehler; eigentlich muß das "!= '\n'" weg, weil das getline eine
// Referenz auf fin zurückgibt... Aber selbst wenn du das wegnimmst: für mich liest sich das so:
// "Lese 1 oder 0 Zeichen von fin und schreibe es nach rrch. 0 Zeichen sollen dann gelesen
// werden, wenn das newline erreicht ist. Willst Du das?
            while(fin.getline(rrch,1) != '\n') /*<--Fehler
                                                                          weis aber net warum*/

            {
                if (rrch[0] == '{')
                {
// Das kann nur ins auge gehen. Das ist ein hybrid aus Funktionsaufruf und Deklaration.
// Weder fisch noch Fleisch. Schreib "bearbeiten(rrch)".
                Textbearbeiten::bearbeiten(char* rrch);
                }
                else if (rrch[0] == '}')
                {
                    return 0;
                }
                else
                {
                    fout << rrch;
                }
            }
        }
}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.10.2003, 22:24 Uhr
kllow



so hab das prog überarbeitet und versucht so weit wie möglich die fehler zu beheben.
es sieht nun so aus

C++:
#include <iostream.h>
#include <fstream.h>
#include <string.h>

ofstream fout("kopie.txt"); // zum Schreiben oeffnen
ifstream fin("bearbeiten.txt");
const int buffer = 1;
char ch[buffer + 1];
char *pSource = ch;
//char* pDest;
//char* tue;
//////////////////////////////////////////////////////
class Klammersuche
{
public:    
    char* Kla();
};
class Textbearbeiten
{
public:
    void bearbeiten(char*);
};

/////////////////////////////////////////////////////
char* Klammersuche::Kla()
{
        
    //strcpy(pDest,pSource);
    bool test = false;
        while(!test)
        {
            while(fin.getline(pSource,200))
            {
                if(pSource[0] == '{')
                {
                    fout << "\n{\n";
                    test = true;
                }
                else
                {
                        fout << pSource;
                }
            }
        }
        return pSource;
}





void Textbearbeiten::bearbeiten(char* rrch)
{
    // nun soll er dort weiterlesen wo er aufgehört hat
    // wie bewerkstellige ich das?
    bool test = false;
        while(!test)
        {
            fout << "\t";
            while(fin.getline(rrch,200))
            {
                if (rrch[0] == '{')
                {
                    Textbearbeiten::bearbeiten(rrch);/* hier soll er die methode so oft aufrufen wie es '{' gibt
dafür ist mir halt nix besseres eingefallen und ob es so funkt weis ich auch nicht. Soll halt wie verschachtelte if anweisungen funktionieren. nur ob es das tut? */

                }
                else if (rrch[0] == '}')
                {
                    test=true;
                }
                else
                {
                    fout << rrch;
                }
            }
        }
}


/////////////////////////////////////////////////////////////////
int main(int argc, char **argv)
{
    while(!fin.eof())
    {
        Klammersuche aufruf;
        Textbearbeiten Auf;
        Auf.bearbeiten(aufruf.Kla());
    }
    return 0;
}



es gibt jetzt keine compilerfehler mehr
allerdings macht das programm nichts
wisst ihr wo mein denkfehler liegt?
bzw wo liegen noch fehler?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.10.2003, 13:25 Uhr
kllow



will oder kann mir keiner helfen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
10.10.2003, 13:52 Uhr
virtual
Sexiest Bit alive
(Operator)


Ein Fehler ist auf jeden Fall, daß der Buffer, wohin pSource Zeigt mit 2 Byte deutlich zu klein ist (du machst da ja ganz fleißig Ansätze, 200 Zeichen reinzulesen).
Ich würde vorschlagen, daß Du mal den ganzen Klassenkram rausläßt und nur ein main Schreibst, was alles macht. Ich habe den Eindruck, daß Dich die Klassen momentan noch ein wenig überfordern. Du willst ja offenbar irgendwas mit Einrücken vom Textmachen. Ich würde mal folgende Schritte probieren:

1. Ich würde zunächst ein Program schreiben, welches eine Datei zeichenweise von einer Datei in eine andere Kopiert. Wenn das Programm rund läuft, hast Du ein feines gerüst, auf dem Du aufbauen kannst.

2. Als nächstes kann man das Programm dahingehend modifizieren, daß es erstmal ganz blöd zuästzlich ein "\n" ausgibt, wenn es ein { oder } in der Eingabedatei gefunden hat.

3. Schließlich kann man das Programm weiter ausbauen, daß Du all die Sonderfälle berücksichtigst, die du bereits in anderen Threads angesprochen hast.

Der derzeitige Source ist jedenfalls - verzeih bitte die harten Worte - einfach nur Schrott.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
10.10.2003, 15:29 Uhr
kllow




i werd mir das mal durch den kopf gehn lassen und schauen was dabei raus kommt
:p
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: