[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];