PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : programmieren unter Linux --> Fehler



christophm
10-12-2007, 09:42
Hallo,

der Code: Anlegen eines Verzeichnisses


#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#define MODUS ,0711)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

int main(void) {
char pfadname[200]="Pfad";

if(makedir(pfadname) == –1) {
printf("Konnte kein neues Verzeichnis erstellen\n");
printf(" --> (%s)\n", strerror(errno));
}

return EXIT_SUCCESS;
}


Mein Fehler:
/home/christoph/Code/df/src/df.c: In Funktion »main«:
/home/christoph/Code/df/src/df.c:14: Fehler: verirrtes »\342« im Programm
/home/christoph/Code/df/src/df.c:14: Fehler: verirrtes »\200« im Programm
/home/christoph/Code/df/src/df.c:14: Fehler: verirrtes »\223« im Programm



der Feler verweist auf: if(makedir(pfadname) == –1)

danke

BLUESCREEN3D
10-12-2007, 14:57
Bitte editier deinen Post und setz [code]-Tags um den Quellcode.

Du hast vor der 1 einen Gedankenstrich gesetzt und der wird durch drei Byte codiert, welche der Compiler dann in der Fehlermeldung auflistet.
Ersetz den Gedankenstrich durch einen Bindestrich, dann wird es gehen.

Noch ein Tipp: In char pfadname[200]="Pfad" kannst du die 200 auch weglassen.

jeebee
10-12-2007, 19:43
<snip>
Noch ein Tipp: In char pfadname[200]="Pfad" kannst du die 200 auch weglassen.

Nur musst du das ganze dann wie folgt angehen:

char *pfadname = "Pfad"
Damit du trotzdem noch mehr als ein Zeichen hast.

btw: ein Hinweis auf Windows/Linux/... wäre bei solchen Fragen angebracht

Noch etwas: wozu brauchst du das
#define MODUS ,0711) genau,
sieht m.E. nach unnötigem Unlesbarmachen des Codes aus...

HTH

--
simu`

BLUESCREEN3D
10-12-2007, 19:50
Nur musst du das ganze dann wie folgt angehen:

char *pfadname = "Pfad"
Damit du trotzdem noch mehr als ein Zeichen hast.

Ne, das ist was anderes.

const char *pfadname = "Pfad"; //nicht änderbar (und das liegt nicht am const)
char pfadname[] = "Pfad"; //änderbar
Geht beides.

jeebee
10-12-2007, 20:27
Mein Fehler: ich las deine Aussage als das [200] weglassen, was natürlich falsch wäre. mit char x[] gehts, einfach aufpassen, dass nicht mehr Zeichen geschrieben werden, als im Initialisierungsstring sind.

lokicall
13-12-2007, 07:37
Eine Frage: Aus welcher Bib. stammt makedir, kenne nur mkdir?