0
I can able get input string but I couldn't get input character why?
int main() { char p[20]; printf("enter the string:\n "); scanf("%s",p); printf("the string is %s\n",p); char c; printf ("enter the character:\n "); scanf("%c",c); printf("the char is %c",c); return 0; } output is I'm entering string as hello and I'm not able to give the input for character why? enter the string: the string is hello enter the character: the char is
11 ответов
+ 2
Actually, in the line where string is read,
scanf"%s", &p);
There's no need to use 'address-of' operator for <p>. Arrays decay to pointer to an address of its first element when they are passed as function argument. You can safely do this ...
scanf("%s", p);
The problem of reading a char is because scanf() behaviour which reads until it finds a whitespace (unless appropriate format specifier was used).
scanf() leaves the '\n' character (it is one of the whitespace characters) that was read as user press the Enter key to send the input. And when you try to read a character, that '\n' character will be assigned for variable <c> because it's there (in input stream).
Your workaround by adding a space before the %c specifier makes scanf() ignores what was left behind in input stream, and reads a character again, of which it will assign to <c>. That way you get the loop to work as expected 👍
+ 1
Slick I did this way..but it is working I don't know how
int main()
{
char p[20];
printf("enter the string:\n ");
scanf("%s",&p);
printf("the string is %s\n",p);
char c;
printf ("enter the character:\n ");
scanf(" %c",&c);
printf("the char is %c",c);
return 0;
}
0
I think this'll help. I had the same problem today
https://www.sololearn.com/discuss/2392402/?ref=app
0
Slick so scanf can be used only once in program?
0
You can use it more than once. try adding
getchar();
after the call to scanf when the character is entered. If you have trouble with that, format variable c as a %s string instead of a %c character.
0
Aahhh in the one you posted first you were missing the "&" before the variable in scanf. This line:
scanf("%c", &c);
0
I gave now " %c",&c... I gave space before format specifier but how it is working???
0
The & symbol acceses the memory address of the variable. Thats how they are assigned
0
if I give simply c instead of &c this will not access memory?? then how value Is stored
0
Thats correct! Characters are stored in the input buffer. I recommend putting it through a debugger and following the c variables value
0
Use & for taking input