Zum Inhalt springen

fopen


muhahahe

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

@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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

@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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...