strncpy führt zu segmentation fault

Ich bin einfach nur Herumspielen mit strncpy.

Mein Programm sieht wie folgt aus

typedef struct
{
    char from_str[10];
}test;

main ()
{

    test     s1;
    memset(&s1,0,sizeof(test));
    char       src[10]="himansh";
    char       dest[10];

    memset(dest,0,10);
    src[3]='\0';

    printf("src is %s and strlen is %d \n",
            src,strlen(src));

    fflush(stdout);

    strncpy(s1.from_str,src,100);

    printf("s1.from_str is %s , src is %s \n",
            s1.from_str,src);
    return 1;

}

Bevor ich hier tun strncpy habe ich nun ein "\0" - Zeichen im "src" - string, die Länge des "src" - string wird eine 3 -, Ziel-array der Größe 10 .Aber in strncpy, habe ich die Anzahl der bytes, die kopiert werden 100.

Das heißt, mein Quell-string ist NULL-terminiert. Jetzt strncpy wie jede string-Funktion sollte versuchen, Sie zu kopieren nur 3 bytes, auch wenn die Anzahl der bytes, die ich mehr als 3 (in diesem Fall 100). Es funktioniert, aber ich bekomme einen segmentation fault zu.

Mein Ergebnis ist unten dargestellt

src is him and strlen is 3
s1.from_str is him , src is him
Segmentation fault (core dumped)

Warum ist das " segmentation fault passiert hier.

Kann einer mir helfen hier.

  • Was Sie denken, Sie sollten versuchen zu tun, und was Sie tut sind zwei völlig verschiedene Dinge.
Schreibe einen Kommentar