Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Einzelnes Zeichen in Datei ersetzen?

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 <
010
02.12.2007, 16:46 Uhr
0xdeadbeef
Gott
(Operator)


@Hans: Das ungetc erzeugt da keine Endlosschleife, nein. Durch das fputc wird die Position im Stream ja gleich wieder nach vorne verschoben.

@tester34: Bei mir funktioniert das ohne Probleme, aber ich bin auch auf einem UNIX-System. Ich kann nur vermuten, dass es mit mmc20s Kommentar zusammenhängt, und du zwischen fputc und fgetc noch mal ein

C++:
fflush(fd); // oder
fseek(fd, 0, SEEK_CUR);


brauchst.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
02.12.2007, 17:31 Uhr
tester34



so nach langem probieren funktioniert es nun auch unter windows!
für erklärungen warum dem so ist, wäre ich sehr dankbar

Danke für eure Hilfe!


C++:
int main()
{
FILE *fd;                                
int c;
int d=90;        
fd=fopen("E:\\test123.txt", "r+");        
if(fd!=NULL)                            
{
    while((c=fgetc(fd))!=EOF)                    
    {
       if (c=='t')
       {
          puts("gefunden!");
          fseek(fd, -1, SEEK_CUR);            
          fputc(d,fd);                            
          fflush(fd);                        
       }
    }
}
else if(fd==NULL)                                
{
    cout<<"\n\nFehler beim öffnen der Datei!\n\n";
}
fclose(fd);

system("PAUSE");
return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
02.12.2007, 17:48 Uhr
Hans
Library Walker
(Operator)



Zitat von 0xdeadbeef:
@Hans: Das ungetc erzeugt da keine Endlosschleife, nein. Durch das fputc wird die Position im Stream ja gleich wieder nach vorne verschoben.

Ich kann nur vermuten, dass es mit mmc20s Kommentar zusammenhängt, und du zwischen fputc und fgetc noch mal ein

C++:
fflush(fd); // oder
fseek(fd, 0, SEEK_CUR);


brauchst.


Dann wird das bei mir wohl auch so sein, denn ich hab's auch unter Windoof gestestet, und an der Stelle wo das ungetc stand eine Endlosschleife erhalten, wie oben beschrieben.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 02.12.2007 um 17:49 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
09.12.2007, 11:57 Uhr
wolf360



warum braucht man etz hier BEIDES also fflush und fseek? und müsste es mit einem rewind nicht auch gehn?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
09.12.2007, 16:06 Uhr
0xdeadbeef
Gott
(Operator)


Welchen Teil von "oder" hast du da nicht verstanden?

rewind dagegen setzt den Stream auf den Anfang zurück, das ist nun gerade nicht, was du willst.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
09.12.2007, 16:16 Uhr
wolf360



mhh... aber tester34 benutzt fseek UND fflush??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
09.12.2007, 17:02 Uhr
0xdeadbeef
Gott
(Operator)


Ja, einmal für jeden Wechsel, also einmal vor fputc ein Zeichen zurück, um schreiben zu können, danach flushen, um wieder lesen zu können. Das fflush ließe sich auch durch einen fseek-Aufruf ersetzen, aber was soll's denn.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
09.12.2007, 17:26 Uhr
wolf360



oookey... achso okey danke für die hilfe!

gruß wolf360
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ 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: