string in char array überschreiben



  • Hallo,

    kann man in einem char-Array einen String hinzufügen? Die Leerzeichen im Array sollten mit diesem String überschrieben werden.

    char data[] = {"das ist mein Array:                (meldung)"};
    static char err_msg[] = {"mein text"};
    char *ptr; 
    
    ptr = &err_msg[0];
    

    Welche Funktion bietet sich hier an?

    Gruß
    der kleine tim



  • der kleine tim schrieb:

    ...

    char data[] = {"das ist mein Array:                (meldung)"};
    static char err_msg[] = {"mein text"};
    char *ptr; 
    
    ptr = &err_msg[0];
    

    Welche Funktion bietet sich hier an?
    ...

    strncat Bitte Start- Pointer auf den Teil verbiegen, wo das Target überschrieben werden darf.



  • vielen Dank für deine Antwort.

    strncat Bitte Start- Pointer auf den Teil verbiegen, wo das Target überschrieben werden darf.

    den Startwert nach "Array:" zu bekommen hab ich schon herausgefunden;

    Aber werden dann die Leerzeichen überschrieben durch diesen String (wenn ich strncat verwende)? Oder wird der zweite String einfach hintendrangehängt?

    tim



  • der kleine tim schrieb:

    den Startwert nach "Array:" zu bekommen hab ich schon herausgefunden;
    Aber werden dann die Leerzeichen überschrieben durch diesen String (wenn ich strncat verwende)? Oder wird der zweite String einfach hintendrangehängt?

    Wenn Du Dir das genau anschaust, brauchst Du zwei char *.
    Ich würde fast raten, den Ausgabestring mittels strncpy und strncat zusammenzubasteln, weil, wie Du vermutet hast, der src- String einfach hinten angehängt wird.

    Wenn Du als char *dest jedoch dahin ziehst, daß strncat erst ab Stelle 15 oder so loslegt, dann geht das natürlich auch.
    Mit einem ohne fixer Länge definierten char- Array ist sowas aber immer risikobehaftet. Besser, 'nen eigenen Ausgabestring anzulegen.



  • pointercrash() schrieb:

    der kleine tim schrieb:

    den Startwert nach "Array:" zu bekommen hab ich schon herausgefunden;
    Aber werden dann die Leerzeichen überschrieben durch diesen String (wenn ich strncat verwende)? Oder wird der zweite String einfach hintendrangehängt?

    Wenn Du Dir das genau anschaust, brauchst Du zwei char *.
    Ich würde fast raten, den Ausgabestring mittels strncpy und strncat zusammenzubasteln, weil, wie Du vermutet hast, der src- String einfach hinten angehängt wird.

    Wenn Du als char *dest jedoch dahin ziehst, daß strncat erst ab Stelle 15 oder so loslegt, dann geht das natürlich auch.
    Mit einem ohne fixer Länge definierten char- Array ist sowas aber immer risikobehaftet. Besser, 'nen eigenen Ausgabestring anzulegen.

    d.h. ich leg das char *dest auf die Stelle data[15] innerhalb des einen char Arrays und muss nur dafür sorgen, dass der String err_msg[] mit dem neuen Inhalt kürzer ist als das char Array data von der stelle data[15] bis zum Schluss.

    gruß
    tim


Anmelden zum Antworten