char *argv durchsuchen

mr_xyz

Grünschnabel
Hallo,

ich habe eine Frage bezüglich des durchsuchen vom argv[].
zur einfachen Erklärung ein Bsp (ich benutzte C).:

Terminal Eingabe:
./test.c argument_1 argument_2 abc argument_4

nun würde ich gerne die Position von "abc" bekommen, aber wie funktioniert dies? Ich stehe leider auf der Leitung und hoffe ihr könnt mir helfen.
Vielen Dank im Vorraus!

Lg mr_xyz
 
Zuletzt bearbeitet:
Hallo,

zunächst bin ich etwas irritiert, das du versuchst, das C-File direkt auszuführen. Ich gehe jetzt aber mal davon aus, dass du dir im Klaren bist, das du das c-File in ein Binary kompilieren musst.

Zu deiner eigentlichen Frage, die ich einfach mal mit kommentierten Code beantworten möchte:

C:
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])  // Hier wäre **argv auch möglich und korrekt
{
  int i;
  // Wir fangen bei 0 an, denn 0 ist das erste Element im Array.
  for (i = 0; i < argc; i++) {
    if( strcmp(argv[i], "abc") == 0) {
      // Treffer, "abc" wurde gefunden
      printf("Habe String \"abc\" an Stelle %d gefunden\n", i);
    }
  }
}

EDIT: Ich wollte noch loswerden, das bei C das Element 0 den Namen des Programms entspricht. Wenn dein Binary auch "abc" heißt, wirst du dort einen Treffer haben.
 
Das compilieren habe ich bewusst weggelassen, da dies ja nichts zur Sache tut.

Just in dem Moment bin ich draufgekommen und habe es so ähnlich bzw. gleich gemacht, danke sehr!

LG
 
Zurück