Hi,
ich habe für eine Übungsaufgabe folgende Funktion geschrieben, die ein Array abspeichern soll. Den Namen soll der Benutzer selbst festlegen. Da ich ja nicht wissen kann, wie lang der gewählte Dateiname sein wird, habe ich für den Namen ein Array mit 23 Elementen angelegt. Wie kann ich nun dafür sorgen, dass die Datei nicht einen 23-stelligen Namen erhält, sondern dieser nur so lang ist, wie das sich der Benutzer vorstellt?
Hier die Funktion:
/**************************************************************************************************
Die Funktion soll ein Array unter einem vom Benutzer festgelegten Namen mit der Endung .nst
abgespeichern. Falls der Benutzer schon die richtige Endung angegeben hat, dann wird seine
Eingabe unveraendert uebernommen.
**************************************************************************************************/
void abspeichern(int statistik[])
{
FILE *dateizeiger;
char dateiname[23];
int i;
printf("Name der zu speichernden Datei:");
for (i=0; (dateiname=getchar())!='\n' && i<20; i++);
if (dateiname[i-4]!='.' || dateiname[i-3]!='n' || dateiname[i-2]!='s' || dateiname[i-1]!='t')
{
dateiname='.';
dateiname[i+1]='n';
dateiname[i+2]='s';
dateiname[i+3]='t';
}
printf("dateiname: %s\n",dateiname); // nur zu Testzwecken
dateizeiger=fopen(dateiname, "w+");
if (dateizeiger==NULL)
printf("Fehler beim Abspeichern der Datei\n\n");
else
i=fwrite(statistik, sizeof(int), 13, dateizeiger);
fclose(dateizeiger);
printf("Anzahl der in die Datei geschriebenen Elemente: %u\n\n", i); // nur zu Testzwecken
}'