formatierte Zeichenkette parsen



  • Hallo zusammen,

    ich habe mal wieder ein kleines Problem, das aber sicher leicht lösbar ist:
    Ich will ein float aus einem character-pointer "parsen". Das float ist von runden Klammern eingeschlossen und die öffnende Klammer steht an Position i.

    Beispiel:
    char* c = "ab(20.4)c(3)";
    i = 1;
    Ergebnis:
    float result = 20.4f; //das soll es auf jeden Fall sein 🙂

    Ich habe es also mal so versucht, leider klappt es nicht ganz :(. Es kommt immer ein falscher float Wert raus (ich denke mal ein zufälliger).

    float readParameter(char* s, int& i) {
         float result;
         sscanf_s(&s[i+1],"(%f)", &result);
         return result;
    }
    

    Weiß jemand von euch weiter? 😕



  • Mal schnell zusammengewürfelt:

    const char* c = "ab(20.4)c(3)";
    
    float f;
    for (unsigned int i = 0; i < 10; i++)
    	if (readParameter (c, i, f))
    		printf ("%u. Parameter: %f\n", f);
    
    bool readParameter
      (const char* cStr, unsigned int uParam, float& fReturn)
    {
    	while (*cStr)
    	{
    		if (*cStr == '(' && !uParam--)
    			return (sccanf (cStr, "(%f)", &fReturn) > 0) ? true : false;
    
    		cStr++;
    	}
    
    	return false;
    }
    

Log in to reply