Как объединить строку и число вместе в одну функцию scanf - PullRequest
0 голосов
/ 14 октября 2019

Моя программа завершается каждый раз, когда я ввожу число, когда спрашиваю у пользователя адрес, я понимаю, что каждый раз, когда я ввожу символ, он продолжает работать, но когда я ввожу как строку, так и число, она автоматически заканчивается

#include <stdio.h>

int main() 
{
    int createAccount;
    char firstName[10];
    char lastName [10];
    char address[20];
    char city[15];
    int zip;
    int existingUser;
    int customerSupport;
    int pendingStatements;
    char userName[10];
    printf("1. Create Account\n");
    printf("2. Login to existing user\n");
    printf("3. Customer support\n");
    printf("4. Check pending statements \n");
    printf("Enter: ");

    scanf("%d, %d, %d, %d", &createAccount, &existingUser, &customerSupport, &pendingStatements);

    if (createAccount == 1)
    {
        printf("Name: ");
        scanf("%s", firstName);

        printf("Last Name: ");
        scanf("%s", lastName);

        printf("Address:  ");
        scanf("%s", address);

        printf("City: ");
        scanf("%s", city);

        printf("Zip: ");
        scanf("%d", &zip);
    }
    else if (existingUser == 2)
    {
        printf("Username: ");
        scanf("%s", userName);
    }

}

Ответы [ 3 ]

2 голосов
/ 14 октября 2019

Ваш первый scanf() пытается прочитать 4 числа, разделенных запятыми. Но пользователь вводит только один пункт меню за раз, а не 4 разных номера. Из-за этого ни один из оставшихся scanf() вызовов не работает.

int choice;
scanf("%d", &choice);
if (choice == 1) {
    ...
} else if (choice == 2) {
    ...
} else if (choice == 3) {
    ...
} else if (choice == 4) {
    ...
} else {
    printf("Invalid choice %d\n", choice);
}
0 голосов
/ 14 октября 2019
#include <stdio.h>

int main() 
{

//int createAccount;
char firstName[10];
char lastName [10];
//int address;
char address[20];
char city[15];
int zip;
char password[10];
int choice;



// int existingUser;
// int customerSupport;
// int pendingStatements;
char userName[10];
printf("1. Create Account\n");
printf("2. Login to existing user\n");
printf("3. Customer support\n");
printf("4. Check pending statements \n");
printf("Enter: ");
scanf("%d", &choice);

if (choice == 1)
{
    printf("Name: ");
    scanf("%s", firstName);

    printf("Last Name: ");
    scanf("%s", lastName);

    printf("Address:  ");
    scanf("%s", address);

    printf("City: ");
    scanf("%s", city);

    printf("Zip: ");
    scanf("%d", &zip);
}
else if (choice == 2)
{
    printf("Username: ");
    scanf("%s", userName);
    printf("Password: ");
    scanf("%s", password);
}


}
0 голосов
/ 14 октября 2019

In scanf Если при вводе первого значения вы используете более одной переменной, она присваивается первой заданной переменной. В хорошем кодировании scanf используется только для одной переменной.

Пример -:

int num1, num2;
printf("Enter numbers = ");
scanf("%d %d", &num1, &num2);

printf("%d\n", num1);
printf("%d\n", num2);

вывод

Enter numbers = 1
//It shows blank space it means you have to enter second number
1
2

//You can input two numbers by puting spaces among them. Then it will assign given variables
Enter number = 1 2
1
2

Вы можете видеть, что первое введенное значение всегда присваивается первой переменной. Там нам не нужно несколько переменных, чтобы сделать одну работу. Можно использовать только одну переменную

Там, в вашем случае, вы должны использовать одну переменную для проверки статуса

#include <stdio.h>

int main() 
{

    int choose = 0;
    char firstName[10];
    char lastName [10];
    char address[20];
    char city[15];
    int zip;
    char userName[10];

    printf("1. Create Account\n");
    printf("2. Login to existing user\n");
    printf("3. Customer support\n");
    printf("4. Check pending statements \n");
    printf("Enter: ");

    scanf("%d", &choose);


    if (choose== 1)
    {
        printf("Name: ");
        scanf("%s", firstName);

        printf("Last Name: ");
        scanf("%s", lastName);

        printf("Address:  ");
        scanf("%s", address);

        printf("City: ");
        scanf("%s", city);

        printf("Zip: ");
        scanf("%d", &zip);
    }
    else if (choose== 2)
    {
        printf("Username: ");
        scanf("%s", userName);

    }
    else if (choose== 3)
    {
        printf("..........");
    }
    else if (choose== 4)
    {
        printf("..........");
    }
    else
    {
        printf("Error number\n");
    }

    return 0;

}
...