C: Fehler bei Dateierstellung

Neue Frage »

Auf diesen Beitrag antworten »
nano99 C: Fehler bei Dateierstellung

Meine Frage:
Hi!

Ich bin gerade dabei, ein kleines Programm zum Managen von Dateien zu schreiben. Ich habe es auch schon geschafft, den höchstens 8 Zeichen langen Dateinamen eingeben zu können. Nun möchte möchte ich eine Datei mit dem Namen dateiname + ".txt" erstellen. Aber da ist schon mein Problem. (Ich habe nur einen kleinen (den fehlerhaften) Ausschnitt meines Programms genommen)

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
#include <stdio.h>
#include <conio.h>
#define KEY_EXE 13
#define KEY_A 97
#define KEY_ENTF 83

int main()
{
 int i, j, key;
 int cursorpos=0;
 char dateiname[8];
 char dateiendung[4]=".txt";
 char dateinamegesamt[12];
 FILE *datei;
 for(i=0; i<=7; i++)
 {
  dateiname[i]=' ';
 }
 gotoxy(6,1);
 printf("Neue Datei");
 gotoxy(1,3);
 printf("Dateiname?");
 gotoxy(1,4);
 printf("[        ]");
 gotoxy(2,4);
 do
 {
  key=getch();
  if(key==KEY_A && cursorpos<=7)
  {
   dateiname[cursorpos]='A';
   locate(cursorpos+2,4,"A");
   cursorpos++;
  }

  //Alle restlichen Buchstaben B - Z

  if(key==KEY_ENTF && cursorpos!=0)
  {
   dateiname[cursorpos]=' ';
   locate(cursorpos+1,4," ");
   cursorpos--;
  }
 }
 while(key!=KEY_EXE);
 gotoxy(1,5);
 for(i=0; i<=7; i++)
 {
  dateinamegesamt[i]=dateiname[i];
 }
 j=0;
 for(i=8; i<=11; i++)
 {
  dateinamegesamt[i]=dateiendung[j];
  j++;
 }
 printf("Der Name: %s\n", dateinamegesamt);
 datei=fopen(dateinamegesamt,"w");
 if(datei==NULL)
 {
  printf("Fehler beim Erstellen der Datei!");
 }
 fclose(datei);
 return 0;
}

Nun habe ich ja in Zeile 57 angeben, dass der Dateiname vorher noch ausgegeben werden soll. Wenn ich das Programm aber ausführe, erhalte ich nur folgendes:

code:
1:
2:
3:
4:
5:
6:
7:
8:
     Neue Datei

Dateiname?
[AAAA    ]
Der Name: AAAA    .txt- .txtAAAA    
Fehler bein Erstellen der Datei!

Und eine Datei wird natürlich auch nicht erstellt.

Meine Ideen:
Ich habe ja am Anfang das Dateinamen Array mit Leerzeichen gefüllt und setzte am Ende den Dateinamen mit der Dateiendung ".txt" zusammen.
Nun wird aber ja nach dem korrekten Namen "AAAA .txt" noch "- .txtAAAA " ausgeben und die Datei wird nicht erzeugt.

Woran könnte das liegen?
 
Auf diesen Beitrag antworten »
Karlito

Hallo,

Du hast vergessen die Strings zu terminieren. Ein String in C muss immer mit '\0' enden. Du brauchst also ein Array mit 13 Elementen anstatt 12. Schau dir vlt mal diese Seite an: http://www.mikrocontroller.net/articles/...rarbeitung_in_C

Leerzeichen könnten auch ärger machen. Das musst du mal ausprobieren.

VG,

Karlito
Auf diesen Beitrag antworten »
nano99 C: Fehler bei Dateierstellung

Ach ja, dieses \0!
Jetzt klappt alles,
vielen Dank!
Daumen hoch
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »