[ERLEDIGT] Datei als Parameter übergeben



  • Hallo Leute,

    ich möchte eine Datei als Parameter empfangen können:

    int main(int argc, char **argv)
    {
    	char *filename;
    	int i,j;
    
    	if(argc<2) return 1;
    	else{
    		for(i=0;i<argc;i++){
    			if(0==strncmp(argv[i],"-f",2)){
    				if(NULL==argv[i+1]) return 2;
    				int len = strlen(argv[i+1]);
    				if(len<1 && len>255) return 3;
    				filename = malloc(len*sizeof(char));
    				for(j=0;j<len;j++) filename[j] = argv[i+1][j];
    			}
    		}
    	}
    
    	printf("Laenge *filename : %i\n",strlen(filename));
    	printf("Dateiname : %s",filename);
    }
    

    Wenn ich jetzt mit "-f datei.xyz" starte, dann bekomme folgende Ausgabe:

    Laenge *filename : 22
    Dateiname : datei.xyz²²²²¦¦¦ÑçÀ↨ôO
    

    Wieso sind es 22 Zeichen und nicht 9 obwohl len=9. Selbst wenn ich malloc((int)9) mache funktioniert es nicht?



  • Habe den Fehler gefunden.
    In diesem Fall wurde nicht beachtet das an das Strinende noch ein'\0' angehängt werden muss.

    filename = malloc(len*sizeof(char)[b]+1[/b]);
    for(j=0;j<len[b]+1[/b];j++) filename[j] = argv[i+1][j];
    

Anmelden zum Antworten