char-Array to const char*



  • Hallo,

    meine letzten beiden Probleme wurde von euch super gelöst.
    Nun habe ich folgendes Problem:

    Ich habe eine Funktion, die einen Parameter vom Typ const char* erwartet.
    Mir liegt dieser Parameter aber nur als char-Array vor.

    Wie wandle ich das am besten um oder gibt es eine andere Lösung?

    Gruss

    eure doro



  • @doro
    Helfen kann man nur wenn man weis was das Problem ist, dazu muss man es schildern. Da das hier ein
    C-Forum ist, ist es oftmals am besten es durch ein Stück Code zu schildern.

    Was meinst du mit char array.
    Einen mit \0 terminierten String
    oder
    ein Feld mit definierter Länge in dem Bustaben stehen und das nicht mit \0 beendet ist.

    Sollte ersteres die Lösung meine Rateprocesses sein, so kannst du einfach den Variablennamen in diese Funktion einstetzen

    char  test[40]={"dies ist ein test"}; // dies ist die Deklarationen eines C-Strings mit Initialisierung. 
                                          // nach Konvention wird automatisch nach dem letzten Buchstaben ein "\0" eingefügt
    int result;
    result=strcmp("dies ist ein Test",test); // Sie Funktion vergleicht 2 Strings un liefert das Ergebnis ab 
                                             // der Prototyp ist: int strcmp(const char *a,const char *b);
    


  • mein char-Array:

    char c_command[80];
    

    und wie gesagt die Funktion erwartet ein const char*.

    c_command wird mittels scanf "gefüllt".



  • Dann machs so wie ichs mit "test" in der letzten mail vorgeführt habe.

    Sei vorsichtig mit scanf, du kannst dort leicht mehr als 79 Zeichen eingeben und das führt zum Buffer overrun.
    Du weist das man in einen string chsr test[80] nur 79 zeichen unterbringen kann, weil man noch ein Byte für
    dir trailing \0 braucht.

    Deswegen zwei Verbesserungvorschläge
    schreib

    char c_command[200+1];
    

    1. der Buffer ist deutlich größer, das einer 200 Zeichen eingibt ist ziemlich unwahrscheinlich
    2. Schreib deine Deklaration mit dem + 1 , dann weist du das 128 Zeichen in deinen String passen.


Anmelden zum Antworten