Früher habe ich gets benutzt, aber dann habe ich gehört, dass es von c11 entfernt wurde und dass es insgesamt sehr gefährlich ist. Also habe ich ein wenig gesucht und herausgefunden, dass Sie mit fgets() dasselbe machen können.Alternative zu bekommen?
Das Problem ist, dass, wenn ich fgets() benutze, es auch das Ende der Zeile zu kopieren scheint, was zu einer zusätzlichen unerwünschten Zeile führt.
Ihnen zu zeigen, was ich meine:
//if I have
char key[30];
fgets(key, sizeof(key), stdin);
//now if ender for instance: Doggo and do:
printf("The key is:%s|hozaah!\n", key);
//I expect it to print:
The key is:Doggo|hozaah!
//Instead it prints:
The key is:Doggo
|hozaah!
Gibt es eine Möglichkeit, dies zu umgehen? Oder gibt es eine andere Funktion, die ich stattdessen verwenden kann?
gefunden der Schlüssel [strcspn (Schlüssel, "\ n")] = 0; funktioniert wie ein Zauber, danke! – Mathue24
@Kerrek Chill Kumpel, er hat nur versucht zu helfen, keine Notwendigkeit, so groß zu sein lol – Mathue24
@ Mathue24: Ja, Entschuldigung, fair genug.Ich bin ein wenig überempfindlich gegenüber schlechtem Cargo-Culture in C-Strings, da die meisten Software-Schwachstellen auf schlechtes Verständnis von Strings und von Off-by-Ones zurückzuführen sind. Ich möchte, dass die Leute sorgfältig darüber nachdenken. –