Also habe ich eine Frage über Flags und Argumente in C von Argv-Array. Wenn ich geben Sie einen commant durch Terminal: Beispiel: ./main a b c -a
es nicht, dass -a am Ende erkennt, aber wenn ich es am Anfang aller Argumente wie: ./main -a a b c
wird es erkennen.Flag Reihenfolge in C
Ich versuchte es zu tauschen, wenn ja, es wäre in der Front aller argumetns, aber nach einem Tausch geht es nicht weiter. So etwas wie das Ignorieren der for-Schleife danach. Also tauscht es einfach und beendet dann den Fall. Wenn jemand weiß, was ich hier vermisse, wäre ich glücklich.
Code:
while ((c = getopt(argc, argv, ":ahd:")) != -1) {
switch (c) {
case 'a':
if(strcmp(argv[argc-1], "-a") == 0){
swap(&argv[argc-1], &argv[1]);
}
for(i = optind; i < argc; i++){
for(j = optind; j < argc - 1; j++){
if(strcmp(argv[j], argv[j + 1]) > 0){
swap(&argv[j], &argv[j + 1]);
}
}
}
for(z = optind; z < argc; z++){
printf("%s\n", argv[z]);
}
printf("%s\n", argv[1]);
break;
Sie Ihren Code in der Frage fehlt, so können wir sehen, was Sie falsch machen? :) –
Was ist das "es", auf das du dich beziehst, wenn du sagst "Es erkennt nicht ..."? – rici
Das Problem liegt nicht darin, ob die Programmargumente im 'argv'-Array erscheinen - sie alle tun dies in der Reihenfolge ihres Auftretens in der Befehlszeile - sondern vielmehr, was Ihr Programm mit ihnen macht. Wir können nicht mit dem sprechen, was Ihr Programm tut, wenn Sie nichts vom Programm präsentiert haben. Wenn Sie Hilfe mit Code benötigen, erwarten wir normalerweise, dass [mcve] Ihr Problem demonstriert. –