+ 6

Question related to fgets()

I want to store a string of length two, in a char array. I use the fgets() to get a user input (by setting maximum limit as two) When I tend to output that string But it output only one character. Why? https://code.sololearn.com/cq5gieF6A8mA/?ref=app

1st Aug 2020, 6:32 AM
Yogeshwaran P
Yogeshwaran P - avatar
7 Answers
+ 3
Thank you codemonkey
1st Aug 2020, 6:53 AM
Yogeshwaran P
Yogeshwaran P - avatar
+ 3
codemonkey is it necessary to allocate space for null terminator in char array? I ask this question because fgets() alone append the null terminator
1st Aug 2020, 7:06 AM
Yogeshwaran P
Yogeshwaran P - avatar
+ 3
Thank you codemonkey I got it😂
1st Aug 2020, 7:14 AM
Yogeshwaran P
Yogeshwaran P - avatar
+ 3
codemonkey how did you find that // Also, fgets() is a bit tricky: char arr[3]; fgets(arr, 3, stdin); If user inputs only one character 'a' and hits enter, fgets will read character 'a', read the new line and then append null terminator. Your string will look like this: arr = {'a' , '\n' , '\0'} // Can you provide some code for that to understand clearly
1st Aug 2020, 7:18 AM
Yogeshwaran P
Yogeshwaran P - avatar
+ 3
codemonkey I don't see(i.e didn't take place) "\n" newline 😂 in my output when I enter "a" alone based on your comment https://code.sololearn.com/cC9K438PtS1C/?ref=app
1st Aug 2020, 8:01 AM
Yogeshwaran P
Yogeshwaran P - avatar
+ 3
Wow it was really a tricky one.đŸ˜± Thank you codemonkey â˜ș
1st Aug 2020, 8:13 AM
Yogeshwaran P
Yogeshwaran P - avatar
+ 2
codemonkey suppose if run this code #include <stdio.h> int main() { char char_array[3]; fgets(char_array,3, stdin); printf("%s",char_array);; return 0; } If we input nothing then the output was considered as \n \n \0 // in ansii code 1010 Am I right code monkey?😅
1st Aug 2020, 8:21 AM
Yogeshwaran P
Yogeshwaran P - avatar