string übergeben und verarbeiten.



  • Hallo ich habe mir eine Struct erstellt in welchem ich verschiedene string Daten abspeichere.Nun möchte ich einzelne Daten an eine Funktion übergeben und dort auf Teilstrings überprüfen.Ich habe bisher folgendes geschrieben:

    check=CheckDevice((char*)&G_CAN.Addr); // als übergabe an meine kontroll Funktion
    

    Meine Kontroll Funktion sieht so aus:

    int CheckDevice(char *pAddr)
    {
      char DeviceAddr[]= "g4";
     if (strstr(*pAddr,DeviceAddr)!=0)
     {
       return ERROR;
     }
    return 0;
    }
    

    als Fehler bekomme ich:
    argument of type "char" is incompatible with parameter of type "cons char*"

    Kann mir irgend jemand sagen was ich falsch mache????



  • strstr() erwartet als ersten Parameter ein Argument vom Typ "const char*", du übergibst ein Argument vom Typ "char" (da pAddr ein char-Pointer ist und du diesen dereferenzierst).



  • Wow das ist jetzt ein bissel viel.Bin halt leider voll der Anfänger und jeder Anfang ist bekanntlich schwer.Kannst du mir sagen wie ich es richtig machen kann?



  • Wozu dereferenzierst du denn deinen pAddr Parameter? Was hast du dir dabei gedacht?



  • Hatte erst versucht meinem Wert G_CAN direkt zu übergeben das ging aber auch nicht.



  • Du hast meine Frage nicht beantwortet.. Warum dereferenzierst du pAddr?



  • Weil ich es leider nicht weis wie es genau geht!Dachte ich müste das so übergeben.



  • Übergeben? Hä? Du dereferenzierst deinen übergebenen Parameter pAddr in deiner Funktion, an einer Stelle wo es vollkommen unsinnig ist.

    Vielleicht nochmal das Kapitel über Datentypen und Zeiger durchlesen? 😉



  • Ich versuche das zu verstehen habe auch ein Buch vor mir liegen nur ich verstehe es halt nicht.Darum hätte ich mich über eine kleine Erklärung sehr gefreut.



  • Du übergibt einen Char-Pointer (Typ char*), welcher auf eine Zeichenkette im Speicher zeigt. In deiner Funktion CheckDevice dereferenzierst du diesen Pointer, sodass du nur noch ein Zeichen (Typ char) hast. Die Funktion strstr() erwartet als erstes Argument jedoch einen Char-Pointer (Typ char*), daher meckert dein Compiler, dass du einen Parameter mit nicht kompatiblen Typ übergibst.



  • Jetzt hab ich es verstanden. ich hätte:
    if (strstr(pAddr,DeviceAddr)!=0)
    anstelle von:
    if (strstr(*pAddr,DeviceAddr)!=0)
    Danke jetzt funktioniert meine Funktion auch.


Anmelden zum Antworten