pointer auf struct



  • Hi zusammen,
    ich bin nochn Frischling in Sachen C-Programmierung. Gerade das Thema Pointer verwirrt mich immer mal wieder. So zum Problem, ich möchte ein Programm erstellen (Linux/Unix based), welches für jede Datei in einem Verzeichnis einen neuen Unterordner mit selbigen Dateiname erstellt.

    #include<sys/types.h>
    #include<sys/stat.h>
    #include<dirent.h>
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    int main(int argc, char *argv[]){
    	DIR *dir;
    	struct dirent *dirzeiger;
    
    	if (argc != 2){
    		fprintf(stderr,"Benutzung %s : Direktory\n", argv[0]);
    		return EXIT_FAILURE;
    	}
    
    	if((dir=opendir(argv[1])) == NULL){
    		fprintf(stderr,"Fehler beim öffnen ...\n");
    		return EXIT_FAILURE;
    	}
    
    	while((dirzeiger=readdir(dir)) != NULL)
    		printf("%s\n", dirzeiger->d_name); /* Ausgabe kein Problem,
            aber wie kann ich dirzeiger->d_name an mkdir() übergeben ?? */
    
    	if(closedir(dir) == -1)	
    		printf("Fehler beim schliesssen von %s\n", argv[1]);
    
    	return EXIT_SUCCESS;
    }
    


  • Äh...

    mkdir(dirzeiger->d_name, 0755);
    

    zum Beispiel. Das wird die Verzeichnisse aber im derzeitigen Arbeitsverzeichnis erstellen, also pass auf, wo und mit welchem Parameter du das ausführst.


  • Mod

    Genau so wie du es beim printf auch machst. Warum sollte es anders sein?

    edit: Zu langsam.



  • Danke für die schnellen Antworten, jedoch werden keine Verzeichnisse erstellt.
    Komme ich hier mit mkdir() nicht weiter? Muss ich den String noch irgendwie zerlegen? Wenn ja wie?



  • Wenn du gerade "./a.out ." versuchst, wird mkdir daran scheitern, dass die Namen der Verzeichnisse, die du zu erstellen versuchst, bereits durch Dateien belegt sind. Ansonsten überprüf die Zugriffsrechte des Arbeitsverzeichnisses, dass du da auch reinschreiben darfst.



  • Leuchtet ein, hatte bei der Vorgehensweise einen leichten Denkfehler 🙂 Danke für die Hilfe


Log in to reply