C Struktur mit Vektor

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
  • 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