muhahahe Geschrieben 25. Februar 2003 Teilen Geschrieben 25. Februar 2003 Moin! Ich habe folgendes Problem: ich möchte mit fopen eine Datei öffnen, den Dateinamen aber als Variable einfügen: z.B. fopen(dateiname,"a"); das geht aber nicht, der Standartsyntax ist ja z.B. fopen("test.txt","a"); kann mir da jemand helfen?? Thx im Voraus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 25. Februar 2003 Teilen Geschrieben 25. Februar 2003 Wo ist da das Problem? Sofern "dateiname" vom Typ "char *" ist, solltest Du keine Probleme haben. Nic Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 26. Februar 2003 Teilen Geschrieben 26. Februar 2003 Originally posted by muhahahe.de kann mir da jemand helfen??Wir können dir umso besser helfen, je genauer du den Fehler beschreibst. Übrigens: "das geht aber nicht" ist eine schlechte Fehlerbeschreibung. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muhahahe Geschrieben 26. Februar 2003 Autor Teilen Geschrieben 26. Februar 2003 Okay mit der Variable in fopen(varibale_des_dateinamens,"a) funktioniert, das heißt, es wird eine Datei angelegt, komischerweise ist der Name der Natei "@" Hier mal mein Quellcode: #include <stdio.h> int main() { char filename[4]; fflush(stdin); printf("Das ist ein Testprogramm zur Datei I/O\n\n"); scanf("Filename: %c",filename); fflush(stdin); getchar(); fopen(filename,"a"); } PS.: Danke für die Hilfe Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 26. Februar 2003 Teilen Geschrieben 26. Februar 2003 Du liest ja auch nur ein character ein ("%c"), uebergibts dabei aber die Adresse des Arrays. Einen String kannst Du mit "%s" einlesen, solltest das Array aber ausreichend gross dimensionieren (4 ist etwas wenig). Aus Sicherheitsgründen solltest Du aber auf "fgets()" zurückgreifen, da Du hier auch die Länge des Strings angeben kannst. Nic Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schwarzl Geschrieben 26. Februar 2003 Teilen Geschrieben 26. Februar 2003 Probiers mal hiermit: #include <stdio.h> int main() { char filename[4]; fflush(stdin); printf("Das ist ein Testprogramm zur Datei I/O\n\n"); scanf("%s", filename); fflush(stdin); fopen(filename,"a"); } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 26. Februar 2003 Teilen Geschrieben 26. Februar 2003 @muhahahe.de & Schwarzl Ich rate dringend dazu, dass ihr euch fflush(stdin) abzugewöhnen. Mag sein, dass das auf eurem Compiler/BS funktioniert, aber laut Standard ist das Verhalten von fflush auf Input-Streams undefiniert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schwarzl Geschrieben 26. Februar 2003 Teilen Geschrieben 26. Februar 2003 Wirklich?? :confused: Ehrlich gesagt hab ich das so bei einem C Anfängerkurs während meines Studiums gelernt. Und das erst letztes Semester. Da muß ich meinem Prof wohl mal auf die Füsse treten!! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 26. Februar 2003 Teilen Geschrieben 26. Februar 2003 Bist Du dir sicher, dass sich diese Aussage nicht auf das flushen von stdout bezog? Nic Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muhahahe Geschrieben 26. Februar 2003 Autor Teilen Geschrieben 26. Februar 2003 Na herzlichsten Dank auch! Ist aber schon verwunderlich, dass man bei einem char array %s verwenden muß.... naja c is halt schon ein bisschen anders *g* Mein Lehrer meinte auch, das fflush(stdin) schon funktioniert bei Eingaben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 26. Februar 2003 Teilen Geschrieben 26. Februar 2003 Originally posted by nic_power Bist Du dir sicher, dass sich diese Aussage nicht auf das flushen von stdout bezog?Ja Quelle: http://std.dkuug.dk/JTC1/SC22/WG14/www/docs/n843.htm (Achtung: 1,4 MByte!) 7.19.5.2 The fflush function Synopsis [#1] #include <stdio.h> int fflush(FILE *stream); Description [#2] If stream points to an output stream or an update stream in which the most recent operation was not input, the fflush function causes any unwritten data for that stream to be delivered to the host environment to be written to the file; otherwise, the behavior is undefined. Ich weiß, dass es bei vielen Compilern funktioniert. Man sollte sich aber nicht darauf verlassen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 26. Februar 2003 Teilen Geschrieben 26. Februar 2003 Ich glaube da haben wir uns jetzt mißverstanden. Meine Antwort bezog sich auf den Prof bzw. die Aussage von Schwarzl, nicht auf Deine Antwort. Ich wollte eigentlich wissen, ob der Prof tatsächlich empfiehlt ein Flush auf input streams durchzuführen. Nic Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 26. Februar 2003 Teilen Geschrieben 26. Februar 2003 Originally posted by nic_power Ich glaube da haben wir uns jetzt mißverstanden.Ja, sieht ganz so aus. Sorry Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 27. Februar 2003 Teilen Geschrieben 27. Februar 2003 Originally posted by Klotzkopp @muhahahe.de & Schwarzl Ich rate dringend dazu, dass ihr euch fflush(stdin) abzugewöhnen. Mag sein, dass das auf eurem Compiler/BS funktioniert, aber laut Standard ist das Verhalten von fflush auf Input-Streams undefiniert. Kannst du mir vielleicht eine alternative dazu nenen? Weil ich kann mich erinnern das ich früher in der Schule öfters mal das Problem hatte das ein cin oder scanf() einfach übersprungen wurde. Ein fflush(stdin) hat das Problem immer gelöst. Ich habs auch schon desöfteren dazu benutzt um eine Datei, deren Daten sich noch im Puffer befanden, zum schreiben zu zwingen. Gruß Guybrush Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SgtBadAzz Geschrieben 27. Februar 2003 Teilen Geschrieben 27. Februar 2003 Originally posted by muhahahe.de Okay mit der Variable in fopen(varibale_des_dateinamens,"a) funktioniert, das heißt, es wird eine Datei angelegt, komischerweise ist der Name der Natei "@" Hier mal mein Quellcode: #include <stdio.h> int main() { char filename[4]; fflush(stdin); printf("Das ist ein Testprogramm zur Datei I/O\n\n"); scanf("Filename: %c",filename); fflush(stdin); getchar(); fopen(filename,"a"); } PS.: Danke für die Hilfe Ich habe mal gelernt, erst sollte man gehen koennen bevor man fliegen will .... wie waere es mal ein Buch ueber C herzunehmen und die ersten 30 Seiten konzentriert durchzuarbeiten ? Dann wuerde es dir wie Schuppen von den Augen fallen. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SgtBadAzz Geschrieben 27. Februar 2003 Teilen Geschrieben 27. Februar 2003 Originally posted by Schwarzl Wirklich?? :confused: Ehrlich gesagt hab ich das so bei einem C Anfängerkurs während meines Studiums gelernt. Und das erst letztes Semester. Da muß ich meinem Prof wohl mal auf die Füsse treten!! Was hast du denn studiert ? Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schwarzl Geschrieben 27. Februar 2003 Teilen Geschrieben 27. Februar 2003 @nic_power Sicher nicht. Wir haben ein ähnliches Beispiel bei uns in einer Übungsstunde gehabt. Das wurde so verwendet und mein Dozent hat auch gemeint, daß das hier so gemacht würde. Wie gesagt, da werde ich ihn nochmal darauf ansprechen. @SgtBadAzz Ich studiere Verwaltungsinformatik. Studiengang an der FH und der BFH Hof. Eigentlich peinlich, daß die einem zukünftigen Informatiker falsche Sachen beibringen. Wie gesagt, war allerdings auch erst die Vorlesung Programmieren für Anfänger in C im ersten Semester. Vielleicht haben die uns das dort nur der Einfachheit halber beigebracht. Aber erwähnen hätten die das schon können Im zweiten fangen wir mit C++ an. Schaun ma mal, wie es da weitergeht :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SgtBadAzz Geschrieben 27. Februar 2003 Teilen Geschrieben 27. Februar 2003 Originally posted by Guybrush Threepwood Kannst du mir vielleicht eine alternative dazu nenen? Weil ich kann mich erinnern das ich früher in der Schule öfters mal das Problem hatte das ein cin oder scanf() einfach übersprungen wurde. Ein fflush(stdin) hat das Problem immer gelöst. Ich habs auch schon desöfteren dazu benutzt um eine Datei, deren Daten sich noch im Puffer befanden, zum schreiben zu zwingen. Gruß Guybrush Wenn scanf oder cin uebersprungen wurde, dann liegt das i.d.R. daran dass CRLF (RETURN) zweimal betaetigt wurde obwohl das eigentich nur einmal betaetigt werden sollte, das kann an dicken Fingern liegen oder daran das die Tastatur spinnt etc. etc. Ich kenne das fflush nur bei der Ausgabe, was ja auch Sinn macht. Frakn Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muhahahe Geschrieben 27. Februar 2003 Autor Teilen Geschrieben 27. Februar 2003 @SgtBadAzz: Hiermit entschuldige ich mich für das posten einer Frage in diesem Forum......... Der Quellcode aus einer Problemstellung heraus entstanden. Da ich zugegebener Maßen ein C greenhorn mit nicht all zuviel Zeit bin, hatte ich erst das Problem und dann das c "Wissen". Ich habe mit diesem Forum bisher gute Erfahrungen gemacht, bemühe mich auch selber ein toleranter Mensch bzgl. "nicht Wissenden" zu sein und finde deinen Beitrag deshalb schon etwas daneben. Und du mußt zugeben, dass der zusammenhang einen char-arry mit %s "darzustellen" nicht ganz logisch ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SgtBadAzz Geschrieben 27. Februar 2003 Teilen Geschrieben 27. Februar 2003 Originally posted by muhahahe.de @SgtBadAzz: Hiermit entschuldige ich mich für das posten einer Frage in diesem Forum......... Der Quellcode aus einer Problemstellung heraus entstanden. Da ich zugegebener Maßen ein C greenhorn mit nicht all zuviel Zeit bin, hatte ich erst das Problem und dann das c "Wissen". Ich habe mit diesem Forum bisher gute Erfahrungen gemacht, bemühe mich auch selber ein toleranter Mensch bzgl. "nicht Wissenden" zu sein und finde deinen Beitrag deshalb schon etwas daneben. Und du mußt zugeben, dass der zusammenhang einen char-arry mit %s "darzustellen" nicht ganz logisch ist. Du brauchst dich nicht zu entschuldigen , aber mal ehrlich waere das nicht ganz einfach zu beantworten gewesen wenn mal mein paar Seiten in einem entsprechenden Buch nachsieht. Mich stoert es manchmal das es teilweise nicht Unwissenheit ist aus der diese Fragen entstehen sondern, sorry, Faulheit oder Bequemlichkeit nicht mal in entsprechender Literatur nachzusehen. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muhahahe Geschrieben 27. Februar 2003 Autor Teilen Geschrieben 27. Februar 2003 Ist meiner Meinung nach Ansichtssache, wie man Postings von "Nichtwissenden" interpretiert. Aber egal. eod Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.