this post was submitted on 27 Jun 2023
6 points (100.0% liked)
C Programming Language
936 readers
1 users here now
Welcome to the C community!
C is quirky, flawed, and an enormous success.
... When I read commentary about suggestions for where C should go, I often think back and give thanks that it wasn't developed under the advice of a worldwide crowd.
... The only way to learn a new programming language is by writing programs in it.
- irc: #c
๐ https://en.cppreference.com/w/c
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
It's due to the way getchar() and console input work. When you enter "abcdCTRL+D" on the keyboard, here's what happens:
Think about this scenario: What happens if you only enter "abcd" and not press anything else? The program will still be waiting for more input. It needs to receive a signal telling it to stop with the input and proceed with the code execution. But if you press enter, it won't automatically add a new line to the string, because the new line character is still in the input buffer.
This guy is right. I saw OP's post but I did not have enough time to reply at the time. I came back to reply to OP's post, but you are already right.
Thanks a lot for your answer. This might be because of my shallow understanding of how a buffer works, but I don't understand why EOF isn't consumed by getchar() when the other bytes are consumed. Isn't a char just a number and EOF too (-1 I think)? I probably should try and understand buffers more
When you press CTRL+D, first a signal is sent to the console to stop reading from the keyboard, then the EOF character gets added to the buffer. That's why it is not consumed at the same time as the previous characters.