Wie überprüfe ich beim Lesen aus Datei auf Zeilenende?? Wie geht fprintf
-
Moin
Kann mir jemand verraten wie ich oben geschriebenen Vergleich umsetzen kann.
while (temp != '\n') oder ist das gar nicht falsch.2. Kann fprintf beim Schreiben in eine Datei folgendes ab?:
fprintf(fz, "\");--> \\ soll in eine Datei geschrieben werden "Stichwort" Quoting
fprintf(fz, "\"");--> \"soll in die Datei geschrieben werdenDanke
-
zu 1.: an sich schon richtig, musst nur schauen ob das file binär oder textmode liest, und ob es windows- oder unix-style hat (cr/lf oder nur lf)
zu 2.: für zwei backslashes musst du "\\\" schreiben, "\" ist bloss einer...
-
Bei der Darstellung soll ein Zeichen aus einer Datei gelesen werden um es dann mit eventuellen Quotings in eine Datei zu schreiben.
Erstellen etc. klappt auch ganz gut nur scheint mir mein Switch nicht ganz korrekt.1. Überprüfung auf Zeilenende
2. \\ ausgeben
3. \' ausgeben
4. \" ausgeben
5. %%
6. das Zeichen welches in Temp steht ausgebentemp = getc(vorlage); while(temp != EOF) { fprintf(fz, "printf(\""); while ( (temp = getc(vorlage) != '\n') { switch (temp) { case '\' : fprintf(fz, "\\\\"); break; case ''' : fprintf(fz. "\'"); break; case '"' : fprintf(fz, "\\""); break; case '%' : fprintf(fz, "%%"); break; default : fprintf(fz, temp); } } }
-
Des Raetsels Loesung:
'\' -> '\\' ''' -> '\'' '"' -> '\"' "\\"" -> "\"" oder "\"\"", je nachdem was in der Datei stehen soll
An der Hervorhebung kannst zum Teil schon erkennen wo ein Fehler sein koennte. Wenn Woerter ploetzlich farbig sind und es nicht sein sollten ist meist was falsch
.
So far
Phil
-
ich glaub dein erstes case muss auch '\' statt '\' sein....
//EDIT: zu langsam...
-
fprintf(fz, "printf(\""); while ( (temp = getc(vorlage)) != '\n') { switch (temp) { case '\\' : fprintf(fz, "\\\\"); break; case '\'' : fprintf(fz. "\\'"); break; case '\"' : fprintf(fz, "\\""); break; case '%' : fprintf(fz, "%%"); break; default : fprintf(fz, temp); } } fprintf(fz, "\\n\"\);");
WAS WILL MIR DER COMPILER SAGEN????????????
ope.cpp(66) : error C2059: Syntaxfehler : 'string'
ope.cpp(68) : error C2228: Der linke Teil von '.fprintf' muss eine Klasse/Struktur/Union sein
ope.cpp(68) : error C2001: Zeilenumbruch innerhalb einer Konstanten
ope.cpp(69) : error C2143: Syntaxfehler : Fehlendes ')' vor 'break'
ope.cpp(75) : warning C4129: ')' : Nicht erkannte Folge von Escape-Zeichen
ope.cpp(102) : error C2109: Index benoetigt ein Array oder einen Zeigertyp
ope.cpp(102) : error C2102: '&' erwartet L-Wert
ope.cpp(106) : error C2109: Index benoetigt ein Array oder einen Zeigertyp
ope.cpp(106) : error C2102: '&' erwartet L-Wert
ope.cpp(110) : error C2109: Index benoetigt ein Array oder einen Zeigertyp
ope.cpp(110) : error C2102: '&' erwartet L-Wert
-
Welche Zeile ist denn welche?
Der Compiler meckert weil du falsche Zeichenketten hast (Siehe mein letztes Posting).
meckert77 schrieb:
case '\"' : fprintf(fz, "\\""); break; ... fprintf(fz, "\\n\"\);");
Wird zu
case '\"' : fprintf(fz, "\""); break; ... fprintf(fz, "\\n\");");
Und schon stimmt die Hervorhebung und das sollte jetzt gehen.
-
Eben war nur ein Semikolon zu wenig und schon waren 9 Fehler weg. Nun meldet der Compiler keine Fehler mehr also gibts nur noch denkfehler.
Kann mir jemand beim Denken helfen{ fprintf(fz, "#include <stdio.h>; \n"); fprintf(fz, "int main (int argc, char *argv[]) {; \n"); vorlage = fopen("head.txt", "r"); while( (temp = getc(vorlage)) != EOF) { fprintf(fz, "printf(\""); while ( (temp = getc(vorlage)) != '\n') { switch (temp) { case '\\' : fprintf(fz, "\\\\"); break; case '\'' : fprintf(fz, "\\'"); break; case '"' : fprintf(fz, "\\\""); break; case '%' : fprintf(fz, "%%"); break; default : fprintf(fz,"%c", temp); } } fprintf(fz, "\\n\");"); } fprintf(fz, "return 0; \n"); fprintf(fz, "; \n"); fprintf(fz, "}"); fclose(fz); fclose(vorlage); }