argv[] wo sind die argunmente vom programmaufruf?



  • hmm..

    So ganz klappt das nicht..
    Also, ich ahb es so gemacht wie du sagtest:

    #include <stdio.h>
    #include <stdlib.h>
    
    int print_r(char *argv[])
    {
      int i=0,argc;
      /* Spacer festlegen */
      char* space="      ";
      /* Array elemente */
      argc=sizeof(argv)/sizeof(argv[0]);
      printf("Elemente: %d\n", argc);
      printf("Array(\n");
      for(i=0;i<argc;i++)
      {
        printf("%s[%d] = %s\n", space, i, argv[i]);
      }
      printf(")\n");
      return 0;
    }
    
    int main(int argc, char *argv[])
    {
      print_r(argv);
      printf("Argc: %d\n", argc);
      system("PAUSE");
      return 0;
    }
    

    Aber es kommt immer, das es nur 1 element währe, was der array besitzt, auch wenn ich 3 habe.. 😕
    Dein besipiel funktioniert, oder muss ich das bei char arrays anderst machen?

    woran leigt das nun?



  • Meines Wissens nach funktioniert der "Trick" mit dem sizeof(array)/sizeof(array[0]) ausschliesslich bei statischen Arrays. Bei dynamischen Arrays, bzw. wenn Du nur einen Pointer auf das Array hast, funktioniert dies hingegen nicht.
    Wenn Du beispielsweise ein Array an eine Funktion übergibst, so ist es afaik unmöglich, innerhalb der Funktion die Anzahl der Elemente zu bestimmen. Diese muss der Funktion seperat übergeben werden.



  • Ja, sonst müssten ja nicht alle Funktionen die einen Buffer übernehmen auch dessen Größe übernehmen 😉

    MfG SideWinder



  • Ja, aber ich glaube MC_Breit war das noch nicht klar, das wegen habe ich es noch mal gesagt 😉



  • Hmm..

    Aber wenn ich dann ein dynamisches arra habe, meinetwegen um eine pixmap daraus zu erzeugen, wie bekommen ich dan herraus, wann das letze element erreicht ist?
    Oder muss ich dann, so wie ich es jetzt vertanden habe vorher ausrechnen, wieviele elemente das array hat?



  • Du legst das array ja mit malloc an, oder per int arr[10]
    Du hast also irgendwann einmal die größe des Arrays - und jetzt einfach die Größe immer gemeinsam mit dem Array übergeben.



  • stimt eigendlich 😃
    Nagut, dann werd ich jetzt mal veruschen einen hex2bin converter zu schrieben 😉
    (bis gleich.. *hust*)

    bye..



  • OT:
    @SideWinder
    😮 Was hat man denn mit dir angestellt? Du schreibst was mit einem system("PAUSE") 😕



  • AJ schrieb:

    OT:
    @SideWinder
    😮 Was hat man denn mit dir angestellt? Du schreibst was mit einem system("PAUSE") 😕

    Resignation :p



  • @Shade
    😃



  • Nein ich hab seinen Code kopiert. Grund: Alle Änderungen am Code die noch zusätzlich gemacht werden verkomplizieren es nur für ihn das wesentliche zu sehen.

    BTW@MC_Breit: Das ist noch lange kein Grund, dass du soetwas weiter verwenden darfst! ⚠ 😉

    MfG SideWinder


Anmelden zum Antworten