C Struktur mit Vektor

  • Hallo Community,


    ich habe hier ein kleines Programm entworfen... leider funktioniert das einlesen nicht... kann mir da eventuell einer weiterhelfen? Fehlercode:

    MfG


    Moritz

  • Wieso scanf_s?


    Machs doch einfach:


    Funzt einwandfrrei :o

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ahh du nutzt also n neuen C-Standard.


    Dann musst du natürlich alle Parameter für scanf_s nutzen.


    Schreib es mal:


    scanf_s("%s", &pers[i].vorname, 50);


    Musst quasi immer den Buffer angeben :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • aber beim alten funktioniert es nach meiner Art und Weise oder?

    Nach älterem C-Standard nutzt man scanf :D


    Dort kann man den Buffer quasi als token mitgeben:


    "%50[^\n]" Hier hätten wir einen Buffer von 50 Zeichen.


    Aber, da man auch direkt %s nutzen kann, wäre das natürlich unsicherer, als scanf_s, wo sichergestellt wird, dass ein Buffer mitgegeben wird, um eben einen Buffer-Overflow zu vermeiden.


    Eine Alternative wäre fgets, wo auch ein Buffer das alles sichert :)


    Aber bei scanf_s muss immer ein Buffer mitgegeben werden (bei Strings).


    Ich glaub, du kannst es sogar so schreiben:


    scanf_s("%49s", pers[i].vorname, (unsigned)_countof(pers[i].vorname)); //Ich glaube den & Pointer musst du hier nicht verwenden
    //oder eben
    scanf_s("%49s", pers[i].vorname, 50);


    Die %49s lassen Platz für den null-Charakter.


    Kannst ja mal ein wenig ausprobieren oder dich in die Dokus einlesen :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S