# Could you fix my code please? (i get no output after inputing the number)

#### OutOfRange

#include <stdio.h>
int get_number_of_digits(int x){
int j = 1, c = 1;
while (x / j >= 10) {
j *= 10;
c += 1;
}
return c;
}
void get_digits(int x, int T[], int size) {

int j = 1, v = x;
int i;
for (i = 0; i < size - 1; i++) {
T = v / j;
v = v % j;
j /= 10;
}
T[size - 1] = v;
}

int main() {
int x;
printf("Enter a number : ");
scanf("%d",&x);

const int n = get_number_of_digits(x);

int *digits_stocker = (int *)malloc(n * sizeof(int));

get_digits(x, digits_stocker, n);

int k;

for (k = 0; k < n; k++) {
printf("T = %d\t", digits_stocker[k]);
}

free(digits_stocker);

return 0;
}

#### rempas

One of the mistakes that you do is in the line: `T[I] = v / j;[/I]`

Here, you are trying to set the value of the actual pointer and not the value it points to. You need to dereference it instead to modify the actual value. However, you do another mistake. You convert the number to a series of another number that will contain each digit. That doesn't make any sense... You should instead convert it to a string and print it at once! In that case, we will start from the end of the buffer.

Here is a modified code (with comments) that works as you expect it to works:

C:
``````#include <stdio.h>
#include <stdlib.h>

int get_number_of_digits(int x){
int j = 1, c = 1;

while (x / j >= 10) {
j *= 10;
c += 1;
}

return c;
}

void get_digits(int num, char* buffer, int digit_count) {
buffer += digit_count - 1; // We start from the end

/* Starting from the last digit to the first */
do {
*buffer = num % 10; // Get the number of the digit
buffer -= 1;        // Go to the previous location in the pointer
num /= 10;       // "Trim" the last digit of the number
} while(num > 0);  // While the number gets "0"
}

int main() {
int num;
printf("Enter a number : ");
scanf("%d", &num);

const int digit_count = get_number_of_digits(num);

// Allocate one extra byte for the null terminator
char* buffer = (char*)malloc(digit_count * sizeof(char) + 1);
buffer[digit_count] = '\0'; // Add the null terminator

get_digits(num, buffer, digit_count);

for (int k = 0; k < digit_count; k++) {
printf("Character #%d = %d\n", k + 1, buffer[k]);
}

free(buffer);

return 0;
}``````

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

### Members online

No members online now.