Advertisement
KaeruCT

get digits of a number v2

Dec 5th, 2011
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int* get_digits(int n);
  6. int get_first_digit(int n);
  7. int get_num_digits(int n);
  8.  
  9. int main(int argc, char *argv[])
  10. {
  11.     if(argc < 2){
  12.         printf("Please input a number\n");
  13.         return 1;
  14.     }
  15.    
  16.     int num = atoi(argv[1]);
  17.    
  18.     if(num < 0){
  19.         printf("Please input a positive number\n");
  20.         return 1;
  21.     }
  22.    
  23.     int* digits = get_digits(num);
  24.     int num_digits= get_num_digits(num);
  25.     int i;
  26.    
  27.     for(i = 0; i < num_digits; i++){
  28.         printf("%d\n", digits[i]);
  29.     }
  30.  
  31.     free(digits);
  32.     return 0;
  33. }
  34.  
  35. int get_num_digits(int n)
  36. {
  37.     if(n < 10) return 1;
  38.     else return get_num_digits(n/10)+1;
  39. }
  40.  
  41. int* get_digits(int n)
  42. {
  43.     int i = get_num_digits(n);
  44.     int* digits = malloc(sizeof(int) * i);
  45.     int* cur_dig = digits;
  46.    
  47.     while(i>0){
  48.         digits[i---1] = n%10;
  49.         n = floor(n/10);
  50.     }
  51.    
  52.     return digits;
  53. }
  54.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement