Ergebnis 1 bis 10 von 10
  1. #1
    Fortgeschrittener
    Registriert seit
    21.08.2008
    Beiträge
    32

    Idee [C] Kommandozeilen Parameter in einem neuen Array speichern

    Hallo. Hab ein C Programm das Parameter übergeben bekommt. Diese werden in argv gespeichert

    Code:
    int main(int argc, char *argv[]) 
    {
    Das Problem ist, dass ich das hier überkomme:

    argv[0] = Programmname
    argv[1] = Ziel-Text

    also argv[1] enthält den gesammten Ziel-Text, nicht nur ein Zeichen davon. Ich möchte nun diesen Text in ein neues Array kopieren damit ich via

    newArray[7] auf den 8. ten Buchstaben zugreifen kann. Wie geht das?

    strcpy scheiterte irgendwie :/.
    Mein Lösungsansatz ist glaubich etwas zu kompliziert; habe argv in eine Textdatei geschrieben und dann wieder ausgelesen und dies dem Array hinzugefügt.


    Kurz: Wie kopiere ich argv so in ein Array, damit ich auf jeden einzelnen Buchstaben zugriff habe?

  2. #2
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Du hast doch auch so auf jeden einzelnen Buchstaben Zugriff...

    argv[1][7] ---> 8. Buchstabe

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  3. #3
    cookie power :D Avatar von cookie-exploit
    Registriert seit
    16.02.2010
    Beiträge
    249

    Standard

    Code:
    int main(int argc, char *argv[])
    {
       char *newArray = argv[1];
       printf("%c",newArray[7]);
    }
    ich hoffe das hilft dir weiter


    MFG cookie-exploit
    Geändert von cookie-exploit (09.04.2010 um 17:20 Uhr) Grund: edit


    The quieter you become, the more you are able to hear...

  4. #4
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    @cookie-exploit
    Ich denke du hast deinen Post editiert, weil du eingesehen hast, dass mein Weg und dein Weg absolut gleich sind (bis auf die Tatsache, dass du eine Variable mehr brauchst, weswegen ich meinen Weg vorziehen würde).
    Dennoch habe ich jetzt schon einen Beispielcode geschrieben und hab keine Lust, dass das umsonst war.

    Insofern:
    Code:
    #include <stdio.h>
    
    
    int main(int argc, char *argv[])
    {
        if (argc < 2 || strlen(argv[1]) < 8)
        {
            puts("Syntax: [prog] <string>");
            return 1;
        }
        
        printf("8. Zeichen von argv[1]: %c\n", argv[1][7]);
        
        return 0;
    }
    Test:
    Code:
    Microsoft Windows [Version 6.1.7600]
    Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.
    
    C:\Users\Admin\Desktop>a
    Syntax: [prog] <string>
    
    C:\Users\Admin\Desktop>a 123456789
    8. Zeichen von argv[1]: 8

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  5. #5
    cookie power :D Avatar von cookie-exploit
    Registriert seit
    16.02.2010
    Beiträge
    249

    Standard

    jap hast du recht^^ ...ich habe mir den nur flüchtig angeschaut
    und erst nicht drauf geachtet, dass du zwei eckige klammern hinter dem Array gemacht hast :p


    The quieter you become, the more you are able to hear...

  6. #6
    Fortgeschrittener
    Registriert seit
    21.08.2008
    Beiträge
    32

    Standard

    Okay verstanden. Danke. Was heisst das folgende, und ist es problematisch?

    Code:
    char *mySymbol;
    
    whoAmI(&mySymbol)
    
    void whoAmI(char *Symbol){
    
    *Symbol = 'A';
    
    }

    [Warning] passing arg 1 of 'whoAmi' from incompatible pointer type
    Geändert von Uratuso (09.04.2010 um 18:34 Uhr)

  7. #7
    Stanley Jobson Avatar von GregorSamsa
    Registriert seit
    23.08.2008
    Beiträge
    729

    Standard

    Bitte mal mit Code-Tags schreiben. Und den Rest vllt. auch, so kann man _nichts_ erkennen.

  8. #8
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    whoAmI(&mySymbol)
    zu
    whoAmI(mySymbol)

    mySymbol := char *
    &mySymbol := char ** (<--- Zeiger auf einen Zeiger auf einen Character)

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  9. #9
    Fortgeschrittener
    Registriert seit
    21.08.2008
    Beiträge
    32

    Standard

    Zitat Zitat von BlackBerry Beitrag anzeigen
    whoAmI(&mySymbol)
    zu
    whoAmI(mySymbol)

    mySymbol := char *
    &mySymbol := char ** (<--- Zeiger auf einen Zeiger auf einen Character)
    Ich versteh nicht ganz wieso ich nicht

    Code:
    whoAmI(&mySymbol)
    schreiben sollte, damit ich ich in der Funktion

    .....(char *Symbol) schreiben kann, muss ich doch eine Adresse übergeben?


    Und
    Code:
    mySymbol := char *
    &mySymbol := char **
    versteh ich gar nicht :/

  10. #10
    if(1x<>)!~/^(11+)\1+$/
    Registriert seit
    13.08.2007
    Beiträge
    524

    Standard

    Code:
    void whoAmI(char *Symbol){
    Also muss ein Char-Zeiger als Parameter übergeben werden und nicht die Adresse eines Zeigers.

    Code:
    mySymbol := char *
    &mySymbol := char **
    mySymbol ist ein Char-Zeiger, dh eine Adresse die auf irgendwelche Chars zeigen kann.
    Nimmst du nun die Adresse von einem Char-Zeiger, also zb
    &mySymbol, hast du nun eine Adresse die auf einen Zeiger zeigt, also ein Zeiger auf einen Zeiger. (char **)

    Hoffe das ist nicht allzu verwirrend. Ansonsten ließ nochmal ein Kapitel über Zeiger in C.


Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •