Geht nicht und hab ka warum...



  • Hallo,
    Ich ahb mir ein Programm geschrieben das einen String teilen soll und ihn dann weiterverarbeiten soll. Nur leider Bricht bes ab und die für Windows typische ".. hat ein Problem festgestellt und muss beendet werden." Meldung kommt. dh ich habe keine Ahnung was der Fehler ist.. Ich hoffe ihr könnt mir helfen!

    #include <string.h>
    #include <stdio.h>
    #define SEPRATE ":"
    
    void split(char *str)
    {
       char *test0;
       char *test1;
       char *test2;
       char *test3;
       char *test4;
    
       char *result = NULL;
       result = strtok(str, SEPRATE);
       int i = 0;
       while(result != NULL) {
          switch(i)
          {
             case 0:
                test0 = result;
                break;
             case 1:
                test1 = result;
                break;
             case 2:
                test2 = result;
                break;
             case 3:
                test3 = result;
                break;
             case 4:
                test4 = result;
                break;
          }    
          result = strtok(NULL, SEPRATE);
          i++;
       }
    }
    
    int main()
    {
       split("lala:lili:lolo:lele");
       getchar();
    }
    


  • String Literale zu verändern gibt UB.



  • #include <iostream.h>
    #include <string.h>
    #include <stdio.h>
    #define SEPRATE ":"
    
    void split(char *str)
    {
       char *test0;
       char *test1;
       char *test2;
       char *test3;
       char *test4;
       char *help = NULL;
       char *result = NULL;
       help=new char[strlen(str)+1];
       strcpy(help,str);
       result = strtok(help, SEPRATE);
       int i = 0;
         while(result != NULL) {
          switch(i)
          {
             case 0:
                test0 = result;
            //    cout << test0 << endl;
                break;
             case 1:
                test1 = result;
              //  cout << test1 << endl;
                break;
             case 2:
                test2 = result;
              //  cout << test2 << endl;
                break;
             case 3:
                test3 = result;
              //  cout << test3 << endl;
                break;
            }
          result = strtok(NULL, SEPRATE);
          i++;
       }
       cout << test0 << "  " << test1 << "  " << test2 << "  " << test3 << endl;
    }
    
    int main()
    {
       split("lala:lili:lolo:lele");
       getchar();
    }
    


  • Benutze am bestem strcpy statt dirkete Zuweisung (testi=result)



  • hi supertux,

    kannst du mir auch helfen?

    Mein Problem findest du unter C++ Datei schreiben ?

    gruß
    ertan



  • Mit C++ kenne ich mich nicht aus, und C Code will ich nicht posten, damit du kein C Code in C++ benutzt, das ist kein gutes Style. Wenn du aber c++ benutzt, benutze die STL und std::string, das sollte einfacher zu benutzen als strtok.



  • @ertan
    Dein Code ist ja noch falscher als der von Plutonium, der hatte immerhin nur einen Fehler. Mal ganz abgesehen davon, dass du hier teilweise C++ Code im C Forum postest...


Anmelden zum Antworten