fprintf vs. printf

Gast #2409519
Lesenswert?
• ▲
▼
hey zusammen...

ich habe ein programm geschrieben, dass einen text ver- und 
entschlüsselt. jeder buchstabe wird dabei durch ein wort ersetzt und 
danach ein " " angehängt. jetzt soll ich zwischen 5-15 wörtern einen 
punkt setzen, damit es realistischer wirkt. kein problem - funktioniert 
auch alles so weit mit:
1
printf("%c%c%c", '\b' ,'.', ' ');

es soll aber die option geben, dass es auch in ein outputfile 
geschrieben wird:
1
fprintf(out, "%c%c%c", '\b' ,'.', ' ');
genau da ist das problem, denn das leerzeichen wird hier nicht gelöscht! 
sogar das gegenteil passiert, es wird ein zusätzliches leerzeichen 
eingefügt.

ich hoffe, ihr könnt mir helfen.

lg
stefan
#2409527
Lesenswert?
• ▲
▼
Der Beitrag vom OP ist etwas schwer verdaulich.
Bei Textausgabe mit printf() wird das zueletzt ausgegebene Zeichen mit 
\b gelöscht - um mit einem "." überschrieben zu werden.

Das funktioniert natürlich nur an der Textkonsole. Bei der Ausgabe in 
ein File erzielt man dasselbe Ergebnis mittels fseek():
1
fseek(out, -1, SEEK_CUR);
2
fprintf(out, "%c%c",'.', ' ');
Gast #2409557
Lesenswert?
• ▲
▼
ich bedanke mich für die raschen antworten.

zu meiner verteidigung:
ich programmiere in c seite genau 1 1/2 Tagen und da ist es nicht so 
einfach sich so schnell mit den ganzen methoden zurechtzufinden. war 
schon froh, wenn es irgendwie funktioniert hat :D
Gast #2409580
Lesenswert?
• ▲
▼
'\b' löscht nichts, sondern gibt halt den Zeichencode für ein Backspace 
aus. Was damit gemacht wird, hängt davon ab, wohin es gesendet wird. In 
die Datei wird es halt einfach als solches reingeschrieben. Was dann 
damit passiert, hängt wiederum von dem Programm ab, mit dem du die Datei 
anzeigst.
#2410244
Lesenswert?
• ▲
▼
Jim Meba schrieb:

> Das funktioniert natürlich nur an der Textkonsole. Bei der Ausgabe in
> ein File erzielt man dasselbe Ergebnis mittels fseek():
>
1
fseek(out, -1, SEEK_CUR);
2
> fprintf(out, "%c%c",'.', ' ');

Oder aber man schreibt das bewusste Leerzeichen erst gar nicht, dann 
braucht man es auch nicht löschen.

Die AUfgabenstellung läuft doch letzten Endes darauf hinaus, dass 
abhängig von einem Zähler einmal ein Leerzeichen geschrieben wird und 
wenn der Zähler eine Zahl zwischen 5 und 15 erreicht het, wird kein 
Leerzeichen geschrieben sondern ein '.'

-> ein simples if zur Fallunterscheidung. Man darf nur nicht zu faul 
sein, einen printf auf 2 aufzubrechen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren