Pointer



  • Hi Leute, hab ein Problem mit Pointern.

    Ich habe folgendes Code:

    int main(int argc, char *argv[]) {
    char resp[10000];
    char COMMAND[20];
    int firstspace;
    
    [...]
    
    getCOMMAND(COMMAND, resp, firstspace);
    printf("%s",COMMAND);
    
    [...]
    }
    
    void getCOMMAND(char *COMMAND[20], char resp[10000], int firstspace) {
         int i;
         int ic=0;
         for (i=firstspace+1;i<=strlen(resp);i++) {
             if (resp[i]!=' ') *COMMAND[ic] = resp[i];
             if (resp[i]==' ') return;
             }
             }
    

    In resp und firstspace stehen schon Werte und ich will einfach nur, dass in der Variablen COMMAND aus main() dann etwas steht.
    Nur leider macht mein Programm immer Speicherzugriffsverletzungen 😞 .
    Ist aber bestimmt ein leichteres Problem 🙂 .



  • denke du willst sowas

    int main(int argc, char *argv[]) { 
       char resp[10000]; 
       char COMMAND[20]; 
       int firstspace; 
    
       ....
       getCOMMAND(COMMAND, resp, firstspace); 
       printf("%s",COMMAND); 
       return 0;
    } 
    
    void getCOMMAND(char *COMMAND, char* resp, int firstspace) { 
         int i; 
         int ic=0; 
         for (i=firstspace+1;i<=strlen(resp);i++) { 
             if (resp[i]!=' ') COMMAND[ic] = resp[i]; 
             if (resp[i]==' ') return; 
         } 
    }
    

    Kurt

    EDIT: war Blödsinn



  • Nein, geht leider nicht 😞 .



  • XFame schrieb:

    Nein, geht leider nicht 😞 .

    Habs gerade bemerkt. Siehe Edit.
    K



  • Mir fehlt hier noch eine Überprüfung auf 'Überlauf' von COMMAND. Oder anders herum: Wie wird sichergestellt, dass in COMMAND niemals mehr als 19 Zeichen geschrieben werden?



  • Joe_M. schrieb:

    Mir fehlt hier noch eine Überprüfung auf 'Überlauf' von COMMAND. Oder anders herum: Wie wird sichergestellt, dass in COMMAND niemals mehr als 19 Zeichen geschrieben werden?

    Habe leider keine Ahnung was diese Funktion eigentlich machen soll, aber es wird immer nur das 1. Zeichen von COMMAND geändert. Im Vorliegenden Fall ist eine Überprüfung also nicht notwendig ( eventuell auf !null ).
    Kurt



  • In resp steht sowas wie

    irgendeinstring KOMANDO wiederwas
    

    Nun moechte ich in COMMAND aus main() den string "KOMANDO" haben.
    In firstspace steht halt die Postition des ersten Leerzeichens.
    Dann wird solange ein Zeichen aus resp in COMMAND eingelesen, bis halt ein Zeichen mal wieder ein Leerzeichen ist, d.h. das Komando ist zuende und ich habe in COMMAND meinen Komando.
    Nur wie stelle ich das mit den Pointern an?
    Ic hoffe dadurch wurde einiges klarer.



  • Hat sich erledigt, danke.
    Hatte vergessen, dass Arrays ja immer by Reference uebergeben werden. ic wird nun auch mit erhoeht, hatte vergessen das zu erhoehen 🙂 .


Anmelden zum Antworten