undeclared identifier in C

前端 未结 5 1450
忘掉有多难
忘掉有多难 2021-01-26 04:29

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 \"synt

相关标签:
5条回答
  • 2021-01-26 04:51

    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;
    ...
    
    0 讨论(0)
  • 2021-01-26 04:53

    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();
    }
    
    0 讨论(0)
  • 2021-01-26 04:53

    Move this:

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

    Before the switch statement.

    0 讨论(0)
  • 2021-01-26 04:59

    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();
    }
    
    0 讨论(0)
  • 2021-01-26 05:00

    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.

    0 讨论(0)
提交回复
热议问题