Small issue with my coding in C using stdio.h [duplicate] - c

This question already has answers here:
scanf() leaves the newline character in the buffer
(7 answers)
scanf Getting Skipped [duplicate]
(1 answer)
Closed last year.
I am currently working on a code and I keep having issues with my code. I will add it below, but for some reason, whenever I ask for the input, it skips over the second scanner and goes straight to the third. Does anyone know what the issue may be?
#include <stdio.h>
int main()
{
char a,b,c,d;
printf("Please input the price of your shopping items:");
printf("\n");
printf("Item 1:");
scanf("%c", &a);
printf("Item 2:");
scanf("%c", &b);
printf("\n");
printf("Item 3:");
scanf(" %c", &c);
return 0;
}

Related

Console exits on enter [duplicate]

This question already has answers here:
scanf() leaves the newline character in the buffer
(7 answers)
How to read / parse input in C? The FAQ
(1 answer)
Closed 2 years ago.
So, i just want to know how to deal with this, the code doesnt have a purpose besides testing.
why does the the enter i press go to the getchar()command?
or is that the case to begin with? i assume it is.
here is the code
#include<stdio.h>
int main(){
int x,y,z;
printf("Enter two nums\n");
scanf("%d %d", &x, &y);
z=x/y;
printf("%d is answ\n", z);
puts("Press enter to exit");
getchar();
return 0;
}

Asking a user for string issue [duplicate]

This question already has answers here:
fgets doesn't work after scanf [duplicate]
(7 answers)
scanf() leaves the newline character in the buffer
(7 answers)
Closed 2 years ago.
I'm trying to use fgets() to get a string from the user but whenever I run the program it skips right over the fgets(), meaning it won't let me input anything
printf("*********************************\n");
printf(" Stock 3\n");
printf("*********************************\n");
printf("Enter stock name: ");
fgets(name,10,stdin);
printf("Enter the number of shares: ");
scanf("%d", &share3);
printf("Enter the buy price, current price, and fees: ");
scanf("%f, %f, %f", &buy_p3, &current_p3, &fees3);
puts("");
I believe it has something to do with a \n skipping it but I'm not sure where it is coming from. Any help appreciated. Thanks!

Reading 2 characters in C [duplicate]

This question already has answers here:
Scanf skips every other while loop in C
(10 answers)
Closed 5 years ago.
#include<stdio.h>
int main()
{
char a,b;
printf("Enter Character 1 ");
scanf("%c",&a);
printf("Enter Character 2");
scanf("%c",&b);
printf("%c%c",a,b);
}
find output of program. It is not taking 2 characters.
When you enter the first character;
The character Ascii value is placed in the variable A .
Then you press enter and the ascii value of enter thats 13 is placed in the second variable.
So B should be 13.
In order to run this program use flushall() library function..
int main() {
char a,b;
printf("Enter Character 1 ");
scanf("%c",&a);
flushall();
printf("Enter Character 2");
scanf("%c",&b);
printf("%c%c",a,b);
return 0;
}
You could also use the standard Library function scanf()
Write something like:
Scanf(" %c",&variablename);
The space before the %c tells the compiler to skip any whitespace (if any).

C: Writing a loop to print the alphabet between two characters [duplicate]

This question already has answers here:
scanf() leaves the newline character in the buffer
(7 answers)
C skipping one command of a function? [duplicate]
(2 answers)
Closed 6 years ago.
I've been given the pretty simple task of writing a program that will take two characters and then print the letters inbetween them using a for() loop.
Here's my code:
#include <stdio.h>
int main() {
char a, b;
printf("\nEnter the first character: ");
scanf("%c", &a);
printf("\nEnter the second character: ");
scanf("%c", &b);
for(char i = a; i <= b; i++) {
printf("%c ", i);
}
return 0;
}
When I run it, I am prompted to enter the first character correctly but when I press enter it only runs the next printf() and then terminates.
No errors or warnings or anything on compilation. Another similar question I found that was apparently solved does not work for me either.
Thanks in advance.
You have to consume the \n in stdin left by first scanf.
Fastest fix
scanf(" %c", &b);
The space before %c tells to scanf to ignore all whitespaces before to read the char.
If I read your code correctly, by pressing enter, you would enter the second character, which would most probably (depending on the environment) start with a numeric value of 13, which would be smaller than any letter, so the loop's body is executed only once.

why does while loop in C terminates abrubptly [duplicate]

This question already has answers here:
How to do scanf for single char in C [duplicate]
(11 answers)
Closed 6 years ago.
Just testing some code; the following is supposed to run until I enter 'n'. But it stops after one round. Can anyone explain it, and help me implement what I want?
#include <stdio.h>
int main ()
{
char another = 'y';
int num;
while ( another == 'y' )
{
printf ("Enter an number ");
scanf ("%d", &num);
printf ("square of %d is %d", num, num * num);
printf ("\nWant to enter another number y/n\n");
scanf ("%c", &another);
}
}
Thanks.
I really appreciate every one's comments. I did search online for GDB, and used it later. I have to say it made identifying the issue so much easier.
Thanks so much.
Add a space before %c
scanf (" %c", &another);
To eat the left out newline in the buffer after the previous scanf().
1) Use the standard definition of main()
int main(void) //if no command line arguments.
2) Do check the return value of scanf() (and other functions), to make sure that the values were read without any errors.
Use
scanf (" %c", &another);
^^^^^
Also it is better to write
printf ("square of %d is %lld", num, ( long long int )num * num);
^^^^ ^^^^^^^^^^^^^^^^^^^^

Resources