Frage zu Bsp mit strncat, Fehler "stray \'150'"?!



  • Heyo,

    ich mache gerade folgendes Bsp:

    /* strncat.c */
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAX 15
    int main(void) {
       char string[MAX] = "Hallo ";
       char puffer[20];
       /* Vorhandenen Platz in string ermitteln */
       size_t len = MAX – strlen(string)+1;
       printf("Ihr Name: ");
       fgets(puffer, 20, stdin);
       strncat(string, puffer, len);
       printf("%s",string);
       return EXIT_SUCCESS;
    }
    

    Es ist 1:1 aus dem Buch kopiert.

    Beim kompilieren kommt die Fehlermeldung "stray \'150'".

    Bisher hatte ich das noch nie... was bedeutet das und warum kommt das?!

    Greez

    Haimi



  • Huuuaaai!

    Vermutlich hast du irgendwo Quellcode kopiert, indem ein Zeichen vorkommt, das deine IDE nicht interpretieren kann.

    Gruß,
    B.B.



  • Haimi schrieb:

    size_t len = MAX – strlen(string)+1;
    [/cpp]

    1. Hier ist irgendwie kein richtiges '-' Zeichen drin, überschreib das mal.
    2. Ist diese Zeile logisch falsch und führt dazu, daß zu viele Zeichen kopiert werden. Es muß entweder

    size_t len = MAX – strlen(string) - 1;

    oder aber

    size_t len = MAX – (strlen(string)+1);

    heißen.



  • Danke für die Hilfe! 😋 👍

    Das ist ja ein fieser Fehler, der da beim Kopieren passieren kann. Das Minus war ein Bindestrich... jetzt klappts, thx!

    Greez

    Haimi



  • Der andere, logische Fehler ist viel schlimmer, weil er irgendwann während der Laufzeit zu Fehlern führen kann, die Du dann gar nicht mehr so ohne weiteres mit dieser Stelle im Code in Verbindung bringst - deshalb: Bei sowas immer sehr genau hinsehen.


Log in to reply