#include <stdio.h>
void main () {
char str[5];
fgets(str, sizeof(str), stdin);
printf("%s.", str);
}
I wrote this simple code in C, and I'm trying to print a string and a dot in a single line, but whenever I enter a string with 3 or less characters, the output has a line break after the string.
Input:
abc
Output:
abc
.
If I enter something with exactly 4 characters, the output is as I want, without the line break.
I've tried using the gets() and scanf() functions and they worked well, but I cannot use them.
Does someone know why it happens and a solution?
The issue is fgets()
reads the newline char
. You need to take out the newline character which is getting appended in you char
array.
After
fgets(str, sizeof(str), stdin);
You can write below line to get rid of that newline character
str[strlen(str)-1]='\0';
or alternatively you can do like,
char * p=NULL;
p= strchr(str,'\n');
if(p!=NULL)
{
*p='\0';
}