Variablen Dateiname erzeugen - laden?
-
Hallo,
ich möchte gerne einen variablen Dateinamen erzeugen. Dabei habe ich folgende Programmroutine geschrieben:
# include <stdio.h> # include <stdlib.h> # include <string.h> int main() FILE *GSM_Ber; int j; char dateinamezahlW [j]; char dateinameW [7] = "GSM_Ber"; char dateinameerwW [5] = ".txt"; for (j=0; j<5; ++j) { itoa (dateinameW, j, 11); strcat (dateinameW, dateinamezahlW); stract (dateinameW, dateinameerwW); GSM_Ber = fopen("/home/dateinameW", "w+"); fprintf(GSM_Ber,"%d", j); fclose(GSM_Ber); } . . . }
Das Programm wird comliliert, allerdings nicht richtig sauber. Ich erhalte die Fehlermeldung: "implicite declaration of function "itoa"" sowie
"implicit declaration of function "struct"". Woran kann dies liegen?
-
Die ganze Sache würde ich mit snprintf lösen, denn damit ersparst du dir sämtlichen Ärger und musst nicht auf so Sachen wie itoa zurückgreifen. Die Warnungen bekommst du wahrscheinlich deshalb, weil du string.h nicht eingebunden hast.
-
Hallo Carsten,
auch wenn ich die string.h in das Programm integriere bleibt der Fehler bestehen.
-
Ich kenne ja deine ganze Funktionen nicht, aber ist das gewollt:
stract (dateinameW, dateinameerwW); // Soll das nicht strcat heissen?
itoa ist defintiv kein Standard, weswegen es auch nicht in der stdlib.h deklariert ist. Ich würde dir nochmals empfehlen, stattdesen snprintf zu benutzen, damit kannst du das auch erschlagen, es ist einfach zu benutzen und es ist Standard. Vielleicht hilft dir das weiter: Klick...
"implicit declaration of function "struct"": Ich hoffe, dass das ein Schreibfehler ist, denn du kannst keine Funktion haben, die "struct" heisst. Struct ist ein Keyword.
Ich bekomme bei itoa auch eine Warnung, bei strcat nicht mehr, nachdem ich string.h eingebunden habe. Allerdings solltest du, falls es sich bei den angegebenen Stellen um Schreibfehler handelt, ordentlicher posten, denn sonst sucht man sich hier dumm und dämlich.
-
Hallo Carsten,
sorry, das war ein Schreibfehler. Habe es jetzt mit sprintf gelöst. Wie bekomme ich nun den erzeugten String in die Verzeichnisstruktur?
So funktioniert es nicht:
[cpp]
sprintf(Dateiname, "GSM_Ber%d.txt", j);
GSM_Ber = fopen("/home/neubert/Programmierung/Uebergabe/Dateiname", "w+");[/cpp]
-
Vielleicht eher so:
char Dateiname[256]; sprintf(Dateiname, "/home/neubert/Programmierung/Uebergabe/GSM_Ber%d.txt", j); GSM_Ber = fopen(Dateiname, "w+");
(nicht getestet)
-
Hallo Geo, Carsten,
danke es funktioniert.
-
Hallo,
heute wollte ich nun eine Routine schreiben, mit denen ich die variabel erzeugten Dateinamen wieder hochlade. Das Programm funktioniert und er ließt auch die richtigen Werte aus der Datei. Allerdings wird die Routine nicht vollständig sauber compiliert. Wie kann ich denn die Zeile
Dateiname = Datei
sinnvoll editieren, so dass ich die Fehlermeldung wegbekomme?
# include <stdio.h> # include <stdlib.h> # include <math.h> int main() { FILE *Dateiname = NULL; int i, j = 0; char Dateiadresse [1000]; char Datei [1000]; sprintf(Dateiadresse, "/home/neubert/Programmierung/Uebergabe/GSM_Ber%d.txt", j); sprintf(Datei, "GSM_Ber%d.txt", j); printf("%s\n", Dateiadresse); printf("%s", Datei); getchar(); Dateiname = Datei; Dateiname = fopen (Dateiadresse, "r"); if (Dateiname != NULL) { fscanf(Dateiname, "%d\n", &i); printf("%d", i); getchar(); } else { i = 0; } return 0; }
-
Weglassen !! Was soll das denn machen? Datei ist ein char array, Dateiname ein FILE Zeiger, das passt nicht zusammen. Du weist einem FILE Zeiger per fopen() das zu, worauf der dann zeigt. Selbst wenn die Zuweisung gelingen sollte, würde sie direkt in der nächsten Zeile eh wieder überschrieben.
Achja, und bitte poste nächstes Mal direkt die Fehlermeldung dabei. ,)