VAriable aussser halb der funktion



  • hi
    will die variable ausser halb der funktion ändern klappt aber irgendwie nicht so ganz.
    kann mir einer bitte sagen was da falsch ist??

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    void ipcheck(char* test);
    
    void main(void) {
       char strings[] = "12.13.174.15";
       char* test;
       test=&strings;
       int i=0;
       // for(i = 0; i<10;i++) {
       printf("%s\n",strings);
       ipcheck(test);
       printf("%s\n",strings);
    // }
     return 0;
    }
    
    void ipcheck(char* test) {
       int i=1;
       char *ptr;
       ptr = strtok(test, "\.");
       while(ptr != NULL) {
         printf("% d. Wort: %s\n",i++,ptr);
         ptr = strtok(NULL, "\.");
       }
      *test="11.11.11.11";
      return (1);
    }
    


  • hi,
    ein char* zeigt ja auf eine folge von zeichen. wenn der über eine funktion verbogen werden soll, dann musste ihn als doppel-* übergeben. so etwa:

    void ipcheck (char** test) // test zeigt auf einen pointer vom typ 'char'
    {
      // ...
      // ... mach was
      // ...
    
      *test="11.11.11.11"; // der pointer bekommt eine andere adresse 
    }
    
    void main (void) 
    {
       char *strings = "12.13.174.15";  // anfangszustand
    
      // ...
      // ... mach was anderes
      // ...
    
       printf ("%s\n",strings);    // gibt "12.13.174.15"
       ipcheck (&strings);         // hier wird er umgesetzt
       printf ("%s\n",strings);    // gibt "11.11.11.11"
    }
    


  • int ipcheck(char* test); 
    
    int main(void) { 
       char strings[] = "12.13.174.15"; 
    //   char* test; 
    //   test=&strings; 
       int i=0; 
       // for(i = 0; i<10;i++) { 
       printf("%s\n",strings); 
       ipcheck(strings); 
       printf("%s\n",strings); 
    // } 
     return 0; 
    } 
    
    int ipcheck(char* test) { 
       int i=1; 
       char *ptr; 
       ptr = strtok(test, "\\."); 
       while(ptr != NULL) { 
         printf("% d. Wort: %s\n",i++,ptr); 
         ptr = strtok(NULL, "\\."); 
       } 
      strcpy(test, "11.11.11.11"); 
      return (1); 
    }
    

    🙂


Anmelden zum Antworten