Probleme mit fgets() in C?
Hallo,
in meinem C Programm hab ich Probleme mit meinem C-Programm. Wenn ich mit fgets() einen string einlese, dann funktioniert das. Beispielsweie "2222". wenn ich jetzt aber strlen(string) anwende, kommt dort 5 raus und nicht 4. Warum ist das so? Ich weiß, fgets() terminiert einen String mit \0, aber strlen() zählt ja ALLE zeichen außer das \0. nimmt fgets() noch das \n mit, wenn ich Enter drücke? Ich weiß, dass ich das Problem einfach mit strlen()-1 lösen kann, aber es geht nicht um das strlen(), sondern darum, dass zwei Strings codiert werden und der code verglichen wird. Einmal wird der String mit fgets() vom Benutzer eingelesen und einmal wird der Code zurückcodiert und dieser String dann wieder codiert, um die beiden codierten Strings auf Fehler zu vergleichen.
3 Antworten
Ja, fgets liefert auch das '\n' am Ende mit.
https://www.educative.io/answers/how-to-use-the-fgets-function-in-c
The fgets()
function in C reads up to
n
characters from the stream (file stream or standard input stream) to a string
str
. The
fgets()
function keeps on reading characters until:
(n-1)
characters have been read from the stream.
a newline character is encountered.
end of file (EOF) is reached.
Nimmt fgets() noch das \n mit, wenn ich Enter drücke? Ich weiß, dass ich das Problem einfach mit strlen()-1 lösen kann,
Ja und Ja. Wenn du unbedingt willst, kannst du den String auch per strncpy noch in einen ohne \n umkopieren...