7
submitted 3 weeks ago* (last edited 3 weeks ago) by akunohana@piefed.blahaj.zone to c/techsupport@lemmy.world

Goal: a program that takes a char as input and outputs which char has been inputted and the humber of line(s). The below code makes the program output the inputted char twice: once - I assume - as a result of how getchar() works and once as a result of printf(). Is there any way to do this more elegantly, as in, not displaying the inputted char twice? If possible, keep to while, without suggesting for.

PS: the repetition of getchar() is just my ugly way of removing the trailing '\n'.

#include <stdio.h>  

int main(void)  
{  
        int c, nl;  
        c = 0;  
        nl = 0;  

        while ((c = getchar()) != EOF) {  
                getchar();  
                printf("%c, %d\n", c, nl);  
                ++nl;  
        }  
}  
top 2 comments
sorted by: hot top new old
[-] mcmodknower@programming.dev 7 points 3 weeks ago

The first char appears because your terminal is echoing back what you are typing in. This is the default, and you see it also in most other programs, with password inputs as a big exception. Those tell the terminal in some way that it should disable the echo functionality, and turn it back on after the password has been read. see https://stackoverflow.com/questions/59922972/how-to-stop-echo-in-terminal-using-c for more info

[-] akunohana@piefed.blahaj.zone 5 points 3 weeks ago

Nice! Thanks so much! :)

this post was submitted on 01 May 2026
7 points (100.0% liked)

techsupport

3139 readers
3 users here now

The Lemmy community will help you with your tech problems and questions about anything here. Do not be shy, we will try to help you.

If something works or if you find a solution to your problem let us know it will be greatly apreciated.

Rules: instance rules + stay on topic

Partnered communities:

You Should Know

Reddit

Software gore

Recommendations

founded 2 years ago
MODERATORS