+ 1

How can I stop the enter sequence being taken as a character?

https://code.sololearn.com/cnwns6XFKsuS/?ref=app Here if you give two string inputs, the first output gets printed like "This is first input " And second like " This is second" Notice the second double quote in the first line gets printed in the next line instead of the first line itself. How can I fix this? And why does the length of the first input gets printed as +1 of the value, eg if "hai" instead of 3 o/p is 4? How?

20th Jul 2021, 4:06 PM
Srinath
4 Réponses
+ 2
fgets() stores any newline character as part of the string, so you have to manually remove them: a[strcspn(a, "\n")] = '\0'; b[strcspn(b, "\n")] = '\0';
20th Jul 2021, 4:18 PM
Komodo64
Komodo64 - avatar
+ 2
strcspn() scans the first string for any character in the second string ("\n" here). If found, it returns the position of that character in the string. If not found, it returns the last positon in the string (which should be '\0'). We use the return value of strcspn() as an index into the character array (a and b) and assign a NUL-terminating byte where the newline character is located. If there is no newline character, it'll assign a '\0' at the end of the string (i.e it has no effect).
20th Jul 2021, 4:32 PM
Komodo64
Komodo64 - avatar
+ 1
Komodo64 Oh thanks this works perfectly. But can you please explain what these lines actually do?
20th Jul 2021, 4:23 PM
Srinath
0
Komodo64 thanks mate, now I get it!
21st Jul 2021, 12:46 PM
Srinath