Erste zwei Zahlen aus IP-Adresse

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Tag,


    momentan versuche ich aus einer IP-Adresse die ersten zwei Zahlen, welche mit einem Punkt getrennt werden, herauszulesen und auszugeben.
    Daran scheitere ich aber gerade und kann den Fehler nicht entdecken. Das ganze sieht so aus:


    stock GetSerial(playerid)
    {
    new buffer[1], ip[8], ClassA[8], ClassB[4], start=0, part=0;
    GetPlayerIp(playerid,ip,sizeof(ip));
    for(new i=0;i<sizeof(ip);i++)
    {
    strmid(buffer,ip,i,i);
    if(!strcmp(buffer,"."))
    {
    if(part == 0)
    {
    strmid(ClassA,ip,start,i);
    printf("ClassA: %s\n",ClassA);
    start = i + 1;
    part = 1;
    }
    else if(part == 1)
    {
    strmid(ClassB,ip,start,i);
    printf("ClassB: %s\n",ClassB);
    strcat(ClassA,ClassB);
    printf("Serial: ",ClassA);
    return 1;
    }
    }
    }
    return 0;
    }


    Ausgegeben wird momentan aber leider gar nichts. Ich hoffe das jemand den Fehler entdeckt, oder jemand eine andere Idee hat.
    Danke euch für eure Mühe.

  • dir ist aber bewusst das du strfind statt strcmp nutzen solltest?^^


    den strcmp vergleicht strings, wie willst du denn bitte punkte vergleichen?

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Erklärung steht ebenfalls dabei. (Scripting-Übung #1)


    [Scripting-Übung] by INk


    Oh, danke dir :D

    dir ist aber bewusst das du strfind statt strcmp nutzen solltest?^^


    den strcmp vergleicht strings, wie willst du denn bitte punkte vergleichen?


    Naja ich hatte bewusst strcmp benutzt, weil "." ja eigentlich auch ein String ist, oder ?
    Vor allem aber konnte ich bei strfind nicht angeben von wo bis wo er suchen soll.

  • Ja "." ist schon einstring, den kannst du aber nicht mit 127.0.0.1 vergleichen, es würde immer failen.
    du müsstest den punkt denn schon finden ;)
    deshalb strfind

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Ja "." ist schon einstring, den kannst du aber nicht mit 127.0.0.1 vergleichen, es würde immer failen.
    du müsstest den punkt denn schon finden ;)
    deshalb strfind


    Deshalb vergleiche ich ja nicht mit 127.0.0.1 sondern mit Buffer, also einem ebenso aus einer Zahl bestehendem string, was ja wieder sinn machen würde :)



    Deine Funktion war schon richtig. Hab mich bloß ein bisschen blöd ausgedrückt :)
    Danke nochmal.

    Einmal editiert, zuletzt von Darklight ()

  • Dann failt strcmp weil du einen char sozusagen suchst einen string der aus einem Buchstaben besteht.
    Dann probier das mal so
    if(bufferx[i]=='.')

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski