-
Switch problem
Code:
#include <stdio.h>
#include <string.h>
int main()
{
char username[16];
char pass[16];
char conf_pass[16];
short int condition = 0;
short int i = 0;
short int j = 0;
int opt_no = 0;
printf("\n**************ADMISSION*PROGRAM*FOR****************");
printf("\n********************STUDENTS***********************");
printf("\n\n");
printf("\n1.LOG IN");
printf("\n2.CREATE ACCOUNT");
printf("\nEnter Option No.:\t");
scanf("%d", &opt_no);
switch(opt_no)
{
case '1':
break;
case '2':
printf("\nEnter Desired Adiminisrator User Name:\t");
scanf("%s", username);
printf("(Enter Desired Password Not Less Than 8 Characters");
printf("\nAnd Not More Than 16 Characters.)");
while(condition == 0)
{
printf("\n\nPassword:\t\t");
scanf("%s", pass);
j = strlen(pass);
if(j < 8)
{
printf("\nError.Password is less than 8 characters.");
}
if(j > 16)
{
printf("\nError.Password is more than 16 characters.");
}
if(j >= 8 && j <= 16)
{
printf("Confirm Password:\t");
scanf("%s", conf_pass);
i = strcmp(pass, conf_pass);
if(i != 0)
{
printf("Error! Passwords do not match");
}
if(i == 0)
{
condition = 1;
}
}
}
}
return 0;
}
switch not working.
PS: Code not finished, need a little help NOT HOMEWORK.
PPS: New to programming. :D
-
> switch not working
Be more specific?
> NOT HOMEWORK
Doesn't matter, I'd still help you if it was, because you made an effort to solve it yourself.
As for your code, split it into separate functions, and not use a switch statement. I would completely scrap the magic numbers as well:
Code:
#define OPT_LOGIN '1'
#define OPT_REGISTER '2'
/* ..... */
printf("\n%c. LOG IN", OPT_LOGIN);
printf("\n%c. CREATE ACCOUNT", OPT_REGISTER);
/* ..... */
char c = getchar();
if (c == OPT_LOGIN) {
/* do stuff */
} else if (c == OPT_REGISTER) {
/* do more stuff */
} else {
/* invalid option */
}
Getchar(), while much better than scanf for single character input, does screw up the input buffer, so make sure you deal with the newline character appropriately.
-
Code:
scanf("%d", &opt_no);
Instead of scanf use getchar.
And switch statement will work.
-
Or leave input as it is, change cases to integers ...
case 1:
...
case 2:
...
-
You could also change opt_no to char, cause '1' is type char.