fopen...angeben welche Datei geöffnet werden soll.
-
Hallo,
wie kann ich es machen, dass der Benutzer angeben kann welche datei geöffnet werden soll...
Ich habe es folgendermassen versucht.
.....
FILE *zeiger_datei_klasse;
char str[101]={0};
char klasse[8];
printf("Bitte geben Sie die Bezeichnung der Klasse ein (z.B. ita12)\n");
scanf("%s", &klasse);
fflush(stdin);zeiger_datei_klasse = fopen(("C:\\ita12\%s.ita", "r"),klasse);
// So funktioniert es so nicht (s.o.)
// zeiger_datei_klasse = fopen("C:\\ita12\\ita12.ita", "r");
// So läuft es, aber das wird ja von mir eingegeben und ist fest...while (fgets(str,100,zeiger_datei_klasse) != NULL)
{
printf("%s", str);
}
.....Der Benuzter soll nur den Namen der Datei eingeben, ohne die Dateiendung.
Gibt es eine Möglichkeit das hinzubekommen?
Danke für Hilfe
mfg Darius
-
du uebergibst einfach das char feld als parameter
char klasse[9];
char endung[4] = ".txt";
char klasseKomplett[12];fgets( klasse, 8, stdin );
klasse[8] = '\0';/* dateiname und endung zusammenfuegen /
klasseKomplett[0] = '\0'; / notwendig da strcat nach dem '\0' sucht zum anhaehnge*/
strcat( klasseKomplett, klasse );
strcat( klasseKomplett, endung );fopen( klasseKomplett, "r" );
-
Hey Darius,
versuchs doch mal so:
//---------- Nebenfunktion -------------
int oeffnen(char *pointer_dateiname)
{
FILE *datei;datei = fopen ( pointer_dateiname, "r");
if( datei == NULL)
printf("Error");
return(0);
}//--------- Hauptfunktion ---------------
void main()
{
char dateiname[255],*pointer_dateiname;printf("Bitte geben sie den Namen der auszulesenden Tatei an!(zb. - hallo.txt)");
scanf("%s",dateiname[255]);
strcpy(pointer_dateiname, dateiname);
oeffnen(pointer_dateiname);
}müsste so eigendlich funzen! aber nicht die header-dateien vergessen.......
-
Danke für eure Hilfe
ich hab das jetzt so gemacht :FILE *zeiger_datei_klasse;
char str[101]={0};
char pfad[11] = "C:\\ita12\";
char klasse[5]; // hier gings mit 4 nicht
char endung[5] = ".ita";
char klasse_komplett[30]={0};printf("Bitte geben Sie die Bezeichnung der Klasse ein (z.B. ita12) - max. 5 Zeichen\n");
fgets(klasse, 5, stdin);
klasse[6] = '\0';/* Pfad, Dateiname und Endung zusammenfuegen /
klasse_komplett[0] = '\0'; / notwendig da strcat nach dem '\0' sucht zum anhaehnge*/
strcat( klasse_komplett, pfad );
strcat( klasse_komplett, klasse );
strcat( klasse_komplett, endung );printf("%s", klasse_komplett);
zeiger_datei_klasse = fopen(klasse_komplett, "r");
while (fgets(str,100,zeiger_datei_klasse) != NULL)
{
printf("%s", str);
}}
Ich werde das ganze noch mit Zeigern machen da hier eine Länge vorgegeben wird, da die Datei sonst nicht geöffnet wird....
@ ita12_simon : Bist du der Simon aus meiner Klasse oder ist das nur Zufall?
mfg Darius
[ Dieser Beitrag wurde am 01.12.2002 um 18:06 Uhr von ita12_darius editiert. ]
-
char klasse[5]; // hier gings mit 4 nicht
[..]
klasse[6] = '\0';kommt dir daran nichts komisch vor??