string zerlegen...ich hoffe da bin ich richtig;-)



  • hi!
    hi ich will aus einer textdatei was lesen(das ist die erste von mehreren zeilen):
    <php> <sql connetionstring=var>http://212.142.234.95/Chat.php connetion=true

    frage ich will da alles bis auf die ip adresse einlesen in eine 2 char variablen:
    var1=<php> <sql connetionstring=var>http://
    var2=/Chat.php connetion=true

    ich hab mit strstr da nach: http:// gesucht......kann man eine bestimmte länge von einem string mit einem befehl kopieren????
    dann such ich mit strstr wieder nach dem Zeichen: /
    und kopier die restlichen Zeichen in eine 2 Variable!

    könnt ihr mir helfen...was sagt ihr zu meinem ansatz??

    der sinn vom ganzen ich aktualisier immer die ip und speichere sie da im script ab!
    vorher: <php> <sql connetionstring=var>http://212.142.234.95/Chat.php connetion=true
    nacher: <php> <sql connetionstring=var>http://82.134.232.78/Chat.php connetion=true

    lg surf.



  • char var1[]={"<php> <sql connetionstring=var>http://212.142.234.95/Chat.php connetion=true"}; 
    char *var2;
    int pos;
    pos=strchr(var1,':'); // Finde ':'
    var2=var1+pos+1; // var2 zeigt auf das erst '/' nach dem ':'
    var1[pos]=0x00;// var1 ist fertig, Anstelle von ':' steht da ein 0x00 == Stringende
    pos=strchr(var2,'C');// Finde 'C'
    var2=var2+pos; // var 2 Zeigt jetzt auf C von Chat
    


  • C++, nicht C.

    Aber zu deiner Frage, erstmal eine Gegenfrage. Wenn dieser Teil immer gleich ist, wieso legst du diesen String nicht einfach im Program fest, fügst die IP ein, fügst beide zusammen und schreibst weg? Dann brauchste nicht den Teilstring auschneiden und dafür die neue IP einsetzen.

    Ansonsten ist der Ansatz gut. Um die eine bestimmte Länge eines Strings zu kopieren gibt es die Funktion assign mit 3 Parametern:

    string &assign(const string &s, size_type index, size_type laenge)

    assign weißt einem String die ersten laenge Zeichen von String s ab Position index zu. Wenn du also vom ersten buchstaben bis zum 4 Buchstaben haben willst musst du bei index 0 (ab ersten buchstaben) und bei laenge 4 (4 buchstaben kopieren) angeben.

    Damit könntest du ja weiter nach dem http:// suchen und bis dorthin kopieren, mit der funktion, falls sich mal etwas ändert in der Länge.

    Code-Hacker



  • @Code-hacker Ich dacht wir wären hier in ANSI C und nicht im C++ Forum, was nicht heißen soll das die C++ Lösung schlechter oder besser ist

    @Surf. 😞 Bitte Kein Cross-Posting!!! 😞



  • Hmmm...oooops. Vertan! strstr gehört ja zu char strings und nicht zu den string strings 🙄

    OK, wenn das so ist...*alles zurück nehm* Vergiss das mit den Befehl der ist für "richtige" Strings und diese gibt es nur in C++.
    Dennoch frage ich mich, wenn das konstant ist, wieso aktualisiert er dann nicht einfach die IP und setzt das in dem String ein, also ohne den string auszulesen??? Da kann er doch die IP aktualisieren und dann in den String den er im Code definiert einsetzen, zusammenfügen und schreiben.

    Code-Hacker



  • hi!
    <php> <sql connetionstring=var>http://212.142.234.95/Chat.php connetion=true
    in einer anderen datei steht aber auch das:
    printf("Location: http://212.152.243.143/Guestb.htm\r\n");
    will da ja ebenfalls die ip aktualisieren!
    meine merkmale sind also:
    http://
    und das erste / nach der ip!!!!

    strncpy oder strtok? was wär mit dem?

    zb.:
    var1=strtok(string, "http://");
    //var1=<php> <sql connetionstring=var>
    word=strtok(NULL, "/");
    //hilfsvariable word: 212.152.243.143
    dann den restenlichen teil bis zum ende kopieren
    //var2=Chat.php connetion=true

    was mit ihr???

    lg surf.



  • @PAD!!
    deine lösung funzt net so!!!! hat ern error beim compilen!
    mein vorschlag ist so:
    mit strstr nach http:// suchen!
    dann die zeichen bis zum auftreten von http kopieren!!
    dann nach den http:// nach dem nächsten / suchen
    und ab dem zeichen alle restliche zeichen kopieren!!
    was meint ihr????

    lg surf.



  • Die korrekte Lösung ist in deinem neu aufgemachten thread zum gleichen Thema
    http://www.c-plusplus.net/forum/viewtopic.php?p=369393


Anmelden zum Antworten