Использование scanf для захвата строки целых чисел в массив в C - PullRequest
3 голосов
/ 02 февраля 2012

Я пытаюсь использовать scanf для захвата строки чисел и преобразования ее в соответствующий массив.Например, пользователь вводит 1234, затем вводит, и будет установлено следующее:

array[0]=1
array[1]=2
array[2]=3
array[3]=4

Вот мой код:

    void user_input()
{
  int cardarray[16];
  int i;
  char number;
  printf("Enter in the number:");
  for (i=0; i<16; i++)
{
  scanf("%c", &number);
  number = cardarray[i] - '0';
    }


  printf("The number is %d\n", /*some value*/);
}

Я знаю, что вы должнычитать символы и конвертировать каждый в целую цифру, но я не совсем уверен, как.

Ответы [ 4 ]

2 голосов
/ 02 февраля 2012

Если строка

number = cardarray[i] - '0'; 

читать

cardarray[i] = number - '0'; 

Затем делает, как сказал Давид, чтобы вычислить ответ

0 голосов
/ 02 февраля 2012

Вот какой-то код может быть полезен:

#include <stdio.h>
int main(void)
{
    int i = 0;
    /* firstly, capture the input */
    scanf("%d", &i);

    /* secondly , extract for each number:
       1234 -> 4,3,2,1
    */
    int ia[256] = {0};
    int len = 0;
    while(i){
        ia[len++] = i%10;
        i /= 10;
    }

     /* thirdly, reverse the array */
     int j = 0;
     while(j < len-j-1){
         int t = ia[j];
         ia[j] = ia[len-j-1];
         ia[len-j-1] = t;
         j++;
     }

     /*let's see if it works */
     for (j=0; j < len; j++){
        printf("%d ", ia[j]);
        }
     putchar('\n');

     return 0;
}
0 голосов
/ 02 февраля 2012

Я предполагаю, что вы хотите:

printf("The number is %d\n",
   cardarray[0]*1000 + cardarray[1]*100 + cardarray[2]*10 + carrarray[3]);

Вы также можете использовать:

printf("The number is %d%d%d%d\n",
    cardarray[0], cardarray[1], cardarray[2], cardarray[3]);
0 голосов
/ 02 февраля 2012

Вы ищете atoi()

cardarray[i] = aoti(number);

http://www.codingunit.com/c-reference-stdlib-h-function-atoi-convert-a-string-to-an-integer

При этом метод, который вы используете, состоит в том, чтобы вычесть значение набора символов для символа 0 также будет работать нормально, если вы назначите правильную переменную:

cardarray[i] = number - '0';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...