Использовать scanf () для ввода нескольких переменных? - PullRequest
0 голосов
/ 30 января 2012

Мне интересно, возможно ли использовать scanf (), чтобы прочитать одну строку (фактически только 1 цифру от 0 до 9) и ввести данные как переменную char и целую переменную, так что пользователь должен только ввести номер один раз. Любая помощь будет принята с благодарностью. Я пишу на C, используя nano в качестве текстового редактора, gcc в качестве компилятора и Ubuntu 12.04 в качестве моей ОС. У меня также есть доступ к Windoze, если это необходимо. Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 30 января 2012

Вы можете прочитать целое число с помощью scanf, а затем преобразовать его в символ, добавив '0'. Поскольку цифры всегда представлены последовательно, это преобразует любое однозначное число целое число в соответствующее ему символьное значение.

int i;

do {
    printf("Enter an integer: ");
    scanf("%d", &i);

    if (i < 0 || i > 9)
        printf("Please try again (number must be between 0 and 9)\n");
} while (i < 0 || i > 9);

char c = i + '0';

// now i has the number and c has the character
printf("%d %c\n", i, c); // outputs, e.g., 4 4
1 голос
/ 30 января 2012

Вы не хотите принимать переменную дважды, вы хотите использовать cast или преобразование типа .

Считать переменную как символ,проверьте, находится ли оно между '0' и '9' (символ ноль и символ девять), и если это так, приведите его к int следующим образом: int x = (int)(my_character-'0');.

Если вы хотите бытьочень безопасны или требуют строк больше чем один символ, см. функцию atoi.

...