Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » C: Fehler bei Dateierstellung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen C: Fehler bei Dateierstellung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
nano99
unregistriert
C: Fehler bei Dateierstellung Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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?
09.12.2012 20:33
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
09.12.2012 21:03 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
nano99
unregistriert
C: Fehler bei Dateierstellung Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ach ja, dieses \0!
Jetzt klappt alles,
vielen Dank!
Daumen hoch
09.12.2012 21:24
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » C: Fehler bei Dateierstellung