Zeilenwechsel
-
Moin moin,
ich schreibe grad ein programm das eine Datei schreiben soll, die wiederum als input für ein anderes programm dient. Das sieht dann im großen nd ganzen so aus:
#include <stdio.h> void main(void){ FILE *file; int max=4; file=fopen(mypatter.pat,"w"); fprintf(file,"No. of patterns : %d%s",max,"\n"); }
Das problem ist nun das zeichen \n, welches zu ASCII 0A 0D übersetzt wird (hab ich mir im hex-editor angeguckt). Es darf allerding nur 0A heißen, sonst bekomme ich einen syntax-fehler in dem anderen programm.
Ich hab sowohl den compiler von watcom als auch den von Visual C++ Express probiert, ohne erfolg.
Meine kentnisse in C halten sich in grenzen, sonst hätte ich dieses problem wahrscheinlich auch nicht, aber ich muß sowieso ab und zu in C schreiben, deshalb habe ich auch hier C gewählt und nicht z.B. Java.
Würd mich echt freuen wenn mir jemand helfen kann. Hab schon zahlreiche turorials durchgegraben, aber darauf gehen sie nicht ein.
mfg
Leon Bodenhagen
-
Unter Windows wird aus einem '\n' immer ein \r\n. http://de.wikipedia.org/wiki/Zeilenumbruch
Warum dein anderes Programm damit nicht klarkommt ist mir zwar nicht ersichtlich, aber als "Lösung" könntest du die Datei binär schreiben. Sollte gehen.
-
Servus,
hat das irgendeinen Grund, dass du - mypatter.pat - ohne Anführungszeichen schreibst?
Ich würde das Programm so schreiben:
#include <stdio.h> int main(void){ FILE *file; int max=4; file=fopen("mypatter.pat","w"); fprintf(file,"No. of patterns : %d%s",max,"\n"); system("Pause"); }
Warum schreibst du nicht:
fprintf(file,"No. of patterns : %d\n",max);
________________________
-
Felix15 schrieb:
Warum schreibst du nicht:
fprintf(file,"No. of patterns : %d\n",max);
Weil das auch nichts an dem Problem ändert
(die Datei-IO behandelt das \n speziell, um je nach Betriebssystem das "richtige" Zeilenende-Zeichen darzustellen (unter UNIX ist das \n, unter Windows \r\n, auf Apple-Systemen afair \n\r). Um das zu umgehen, kannst du die Datei binär öffnen:file=fopen("mypatter.pat","wb");
(oder dein Zielprogramm öffnet die Datei ebenfalls im Textmodus, dann macht es die Ersetzung wieder rückgängig)
Kauf dir mal eine Signatur
Dann mußt du sowas nicht von Hand unter jeden Beitrag schreiben
-
Vielen Dank erstmal für die Hilfreichen Antworten.
Habe das ganze erstmal schnell in Java geschrieben, da es dort dieses Problem nicht gibt.
Wenn der von mir vorher hochgeladen code teilweise etwas unbeholfen aussieht, ist das hauptsächlich weil es mir an Erfahrung mangelt, das kommt halt mit der Zeit. Die entwischten Anführungszeichen sind allerding darauf zurückzuführen das es ursprünglich eine variabel war...Hab es dann nochmal schnell in C ausprobiert, und es hat prompt funktioniert
Ist doch schöner ein funktionierendes Programm zu haben, als es einfach aufzugeben.
Das Problem ist wohl hauptsächlich dadurch entstanden, dass das Zielprogramm (nicht von mir geschrieben) einen UNIX-kern hat (GUI aber in Java).
Vielen Dank für die schnelle Hilfe.
Leon
-
Hi,
möcht mich auch bedanken für die Beiträge.
"file=fopen("mypatter.pat","wb");" bzw. für den Hinweis binär zu öffnen.
Ich hatte zwar ein ganz anderes Problem, die Lösung war aber die selbe.^^
Thx an alle!!
Gruß
Frank