Chinmay Dabke
Chinmay Dabke

Reputation: 5140

undeclared identifier in C

I am trying to compile a small bank program in C in visual studio 2012 express. It shows me this error "undeclared identifier" for almost all variables and this one too "syntax error: missing ';' before 'type'".Please tell me the correct syntax.Thank you.

#include<stdio.h>
#include<conio.h>
int main()
{
printf("Welcome to skybank\n");
int deposit,withdraw,kbalance;
char option;
printf("Press 1 to deposit cash\n");
printf("Press 2 to Withdraw Cash\n");
printf("Press 3 to Know Your Balance\n");
scanf_s("%c",option);
int decash,wicash;
switch(option)
{
int balance;
printf("Enter your current Balance\n");
scanf_s("%d",&balance);
case 1:
    printf("Enter the amount you want to deposit\n");
    scanf_s("%d",&decash);
    printf("Thank You\n");
    printf("%d have been deposited in your account\n",decash);
    break;
case 2:
    printf("Enter the amount you want to withdraw\n");
    scanf_s("%d",&wicash);
    int wibal;
    wibal=balance-wicash;
    printf("Thank You\n");
    printf("%d have been withdrawed from your account\n",wicash);
    printf("Your balance is %d\n",wibal);
    break;
case 3:
    printf("Your balance is Rs.%d\n",balance);
    break;
default:
    printf("Invalid Input\n");
    break;
}
getchar();
}

Upvotes: 0

Views: 2393

Answers (5)

BLUEPIXY
BLUEPIXY

Reputation: 40145

do at the beginning of the block in the declaration of the variable for visual c.

E.g.

int main()
{
    int deposit,withdraw,kbalance;
    char option;
    int decash,wicash
    int balance;
    int wibal;
...

Upvotes: 1

Nobilis
Nobilis

Reputation: 7448

Regarding the unidentified variables, try putting all declarations of variables at the top of the main block, something like:

int main()
{
    int deposit, withdraw, kbalance, decash, wicash, wibal;
    char option;
    printf("Welcome to skybank\n");

Older variants of C frown upon mixing variable declarations with code. To my knowledge the C standard of Microsoft's C implementation is pre-C99 so perhaps this could be the issue.

A few other issues that you should look into:

scanf_s("%c",option); - option should be &option as you are taking a pointer to that variable.

Also here: case 1:

You want '1' (as in case '1') instead of plain 1 as it is a char, not an int you want.

Same for the other case checks.

With regards to the scanf_s problems, try compiling with warnings, it should have been pointed out by the compiler.

Finally, you might want to rid your code of the variables you're not using such as kbalance, withdraw and deposit.

Upvotes: 1

David Heffernan
David Heffernan

Reputation: 612854

The Microsoft C compiler only supports a 25 year old version of the language. And one of the limitations is that all variables must be declared before any other statements. So move all your variable declarations to the top of the function.

The next error I can see is the use of scanf_s with the %c format string. You must pass a pointer to the variable, and pass the number of characters to read.

scanf_s("%c", &option, 1);

And likewise you need to pass an address for the read of balance.

You also need to change the switch statement so that it just contains cases. Move the bare instructions outside.

Your reading of option won't work. Because when you check for 1 you are checking for the character with ASCII code 1. Change option to be an int and read using %d.

Perhaps you are looking for something like this:

#include<stdio.h>
#include<conio.h>

int main(void)
{
    int deposit,withdraw,kbalance;
    int option;
    int decash,wicash;
    int balance;
    int wibal;

    printf("Welcome to skybank\n");
    printf("Press 1 to deposit cash\n");
    printf("Press 2 to Withdraw Cash\n");
    printf("Press 3 to Know Your Balance\n");
    scanf_s("%d", &option);
    printf("Enter your current Balance\n");
    scanf_s("%d", &balance);
    switch(option)
    {
        case 1:
            printf("Enter the amount you want to deposit\n");
            scanf_s("%d", &decash);
            printf("Thank You\n");
            printf("%d have been deposited in your account\n", decash);
            break;
        case 2:
            printf("Enter the amount you want to withdraw\n");
            scanf_s("%d", &wicash);
            wibal=balance-wicash;
            printf("Thank You\n");
            printf("%d have been withdrawed from your account\n", wicash);
            printf("Your balance is %d\n", wibal);
            break;
        case 3:
            printf("Your balance is Rs.%d\n", balance);
            break;
        default:
            printf("Invalid Input\n");
            break;
    }
    getchar();
}

Upvotes: 5

m0skit0
m0skit0

Reputation: 25873

Move this:

int balance;
printf("Enter your current Balance\n");
scanf_s("%d",&balance);

Before the switch statement.

Upvotes: 0

Anastasis
Anastasis

Reputation: 192

try this code:

#include<stdio.h>
#include<stdlib.h>
int main()
{
    printf("Welcome to skybank\n");
    int deposit,withdraw,kbalance;
    char option;
    printf("Press 1 to deposit cash\n");
    printf("Press 2 to Withdraw Cash\n");
    printf("Press 3 to Know Your Balance\n");
    scanf("%c",&option);
    int decash,wicash;
    switch(option)
    {
    int balance;
    printf("Enter your current Balance\n");
    scanf("%d",&balance);
    case 1:
        printf("Enter the amount you want to deposit\n");
        scanf("%d",&decash);
        printf("Thank You\n");
        printf("%d have been deposited in your account\n",decash);
        break;
    case 2:
        printf("Enter the amount you want to withdraw\n");
        scanf("%d",&wicash);
        int wibal;
        wibal=balance-wicash;
        printf("Thank You\n");
        printf("%d have been withdrawed from your account\n",wicash);
        printf("Your balance is %d\n",wibal);
        break;
    case 3:
        printf("Your balance is Rs.%d\n",balance);
        break;
    default:
        printf("Invalid Input\n");
        break;
    }
    getchar();
}

Upvotes: 0

Related Questions