user3722549
user3722549

Reputation: 3

Using Array Integer

I'm new in C programming language.
I need to get every digit separately that user have entered.
Here is my code:

#include <stdio.h>

int main()
{
    int n[100];
    printf("Enter a number: ");
    scanf("%d",&n);
    printf("%d %d %d",n[1],n[2],n[3]);

   return 0;
} //i know that my code is not assigning like i want.

and now for example user entered a number like 123, i want the output like 1 2 3,
How can i assign every digit to n[i] ?
Without using string to int or int to string like atoi?
Here is what Im going to do:
User will enter a number and the program will search from Matrix 100x100 in row or column. i think i need to get the every digit separately to search.

Upvotes: 0

Views: 89

Answers (2)

Sergey L.
Sergey L.

Reputation: 22542

In this case you should read the user input character by character:

#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>

int main()
{
    char input[100];
    int n[100];
    printf("Enter a number: ");
    if (fgets(input, sizeof(input), stdin)) { // attempt to read a line
        int i;
        for (i = 0; input[i]; i++) { // for each entered character
            if (input[i] >= '0' && input[i] <= '9') { // is a digit
                n[i] = input[i] - '0';
                printf("%d ", input[i] - '0');
            } 
            else if (isspace(input[i])) // end of entered integer
                break;
            else {
                printf(stderr, "Input is not a number\n");
                return -1;
            }
        }
        printf("\n");
    } else {
        fprintf(stderr, "User did not enter valid input.\n");
    }

   return 0;
}

Upvotes: 0

Ivaylo Strandjev
Ivaylo Strandjev

Reputation: 70929

No need to go to character array. The lats digit of a number n can be computed using n%10. Then you can remove the last digit using n /= 10. So this cycle would print the digits in reverse order:

void print_rev_digits(int n) {
  while (n) {
    printf("%d\n", n%10); 
    n /= 10;
  }
}

And using a stack you can print the digits in the correct order. You can also use recursion for this(which will use stack for you). I am deliberately not posting a complete solution.

Upvotes: 3

Related Questions