eingabe auf richtiges format prüfen



  • hallo zusammen,

    ich stehe vor folgendem problem. der user macht eine eingabe in dem format "text:text". das ganze wird dann in einer variablen gespeichert. nun würde ich gerne überprüfen, ob der user das ganze wirklich in diesem format eingegeben hat und nicht etwa so ":text" oder so "text:" oder "text text" oder ... leider bin ich noch ein ziemlicher anfänger und habe keinen blassen schimmer, wie ich das ansellen könnte.

    wäre toll, wen mir da jemand weiterhelfen könne.
    Grüße
    Steffen



  • probier dies:

    #include <stdio.h>
    
    // splittet in --> out_left und out_right
    // gibt 1 zurück wenn format ok war
    int splitter (char *in, char *out_left, char *out_right)
    {
        int colon = 0;
        char *left = out_left;
        char *right = out_right;
        for(;;)
        {
            char b = *in++;
            if (b == 0)
            {
                *out_left = 0;
                *out_right = 0;
                break;
            }
            if (b == ':')
            {
                colon++;
                continue;
            }
            if (colon)
                *out_right++ = b;
            else     
               *out_left++ = b; 
        }
        return colon == 1 && left != out_left && right != out_right;
    }
    
    int main()
    {
        char *in = "hallo:test";
        char left[256];
        char right[256];
        int result = splitter(in, left, right);
        printf ("%d %s %s\n", result, left, right);
        getchar();
    }
    


  • Hallo,

    ich habe mich da jetzt eine ganze Weile mit beschäftigt, aber ich bekomme es nicht ans laufen. Ich bekomme immer einen Speicherfehler:

    Habe es so übernommen wie es hier steht.

    Gruß
    Steffen



  • Nei mir funzts einwandfrei!

    Post mal den fehler!

    mfg hohesC



  • Der Fehler:

    Die Anweisung in "......." verweist auf Speicher "...". Der Vorgang "read" konnte nicht auf dem Speicher ausgeführt werden.
    Der fehler tritt auf bei

    char b = *pruefobj++;

    Gruß



  • Hallo,

    habe es jezt am Laufen. Keine Ahnung wo der Fehler nun wirklich lag, auf jeden Fall läuft es jetzt, vielen Dank.

    Gruß
    Steffen


Anmelden zum Antworten