Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » textdatei ändern

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 ]
000
26.09.2005, 21:10 Uhr
Crook



hey...

ich sollte von einer eingelesenen textdatei eine zeile suchen, ändern, und wieder speichern!!!
hab mir dazu folgenden code überlegt...doch der funzt iagendwie nit!!!

hat irgendwer a idee???


C++:
   FILE *kartei;              
  
    kartei=fopen("D:/3HNB/IKT/config.txt", "r");
    i=0;
    
    char * pch;
    
    while (!feof(kartei))
    {
        fgets (zeile,100,kartei);      
        pch=strstr(zeile,"files=20");
        strncpy(pch,"files=15",20);
        gotoxy(3,(i+1));
        cout << zeile;
        gotoxy(1,1);
        //cout<<pch;
        strcpy(liste[i],zeile);
        i++;
                
    }




Bearbeitung:

benutzt mal bitte codetags!!!!


Dieser Post wurde am 26.09.2005 um 22:53 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.09.2005, 22:54 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


so schaut er ok aus, wenn die variablen korrekt deklariert worden sind, was geht den nicht?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.09.2005, 00:29 Uhr
ao

(Operator)


Es wird nicht in die Datei zurückgeschrieben, sondern nur der Speicherinhalt geändert. Auf das strncpy müsste ein fseek, fputs und wieder fseek folgen, und die Datei müsste mit "r+" geöffnet werden.

Aber das wird langsam kompliziert, also warum nicht das ganze File am Stück einlesen, im Speicher bearbeiten und auf einen Rutsch wieder wegschreiben?

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.09.2005, 10:01 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja trotzdem ist das stück was er geschrieben hat richtig, ich dachte das er eben das schreiben woanders übernimmt, schliesslich schreibt er das zeug zeilenweise in eine "liste".
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.09.2005, 10:05 Uhr
Crook



²FloSoft: ea findet ja auch die zeile...nur beim überschreibn krieg ich einen Windows Fehler....
²ao: wie meinst: "am stück einlesen"???

trotzdem danke....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
27.09.2005, 10:16 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Dann wäre es mal gut wenn du sagst was genau nicht funktioniert und welchen Fehler du genau bekommst anstatt die leute raten zu lassen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
27.09.2005, 10:21 Uhr
Crook



das überschreiben von "files=20" auf "files=15" funktioniert nicht!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
27.09.2005, 10:24 Uhr
Tommix



Hallo,

Zitat von Crook:


C++:
        strncpy(pch,"files=15",20);




"files=15" ist keine 20 Zeichen lang!

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
27.09.2005, 10:28 Uhr
ao

(Operator)


Vor dem Überschreiben prüfen, ob "files=20" in der untersuchten Zeile tatsächlich gefunden wurde. Andernfalls zeigt pch nämlich auf NULL.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
27.09.2005, 11:07 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von Tommix:
Hallo,

Zitat:


C++:
        strncpy(pch,"files=15",20);




"files=15" ist keine 20 Zeichen lang!

- Tommix

das ist kein problem, strncpy kopiert so: copied_bytes = (strlen(string) > 20 ? 20 : strlen(string))

ich tippe mal eher darauf das pch NULL ist und er deshalb abstürzt.

Achso, genauergesagt zeigt pch ins nirvana (uninitialisiert) null dürfte strncpy abfangen, nur uninitialisiert eben nicht.
--
class God : public ChuckNorris { };

Dieser Post wurde am 27.09.2005 um 11:08 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


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: