Почему не выводит отсортированные числа?

Не могу понять, почему не выводит отсортированные числа?

Я вроде ввожу 3 числа, а на выходе странные числа. Хотелось бы получить те же числа на выходе, но в правильном по возрастанию порядке порядке. А так же функция стрелян хотелось бы чтобы автоматически считала количество введенных символов.

int main(void)
{   int massive[4];
    scanf("%i %i %i %i", &massive[2], &massive[1], &massive[3], &massive[0]);
    for (int i=0, lenth=strlen(massive); i < lenth - 1; i++ )
    { int j = i + 1;
        do
        { if (massive[j] < massive[i]) 
            {   int temp = massive[i];
                massive[i] = massive[j];
                massive[j] = temp;
            } j++;
        } while (j < lenth );
    }
}

Ответы (2 шт):

Автор решения: DmitryK

Пузырьковая сортировка

int main(void)
{
    const int SIZE  = 4;
    int A[SIZE] = { 4, 2, 3, 1};
    // scanf("%i %i %i %i", &A[2], &A[1], &A[3], &A[0]);
    for (int i=0; i < SIZE - 1; i++ )
        for (int j = SIZE - 1; j > i; j--)
            if ( A[j] < A[j-1])
            {
                int temp = A[j];
                A[j] = A[j-1];
                A[j-1] = temp;
            }
    printf("%i %i %i %i\n", A[0], A[1], A[2], A[3]);
}
→ Ссылка
Автор решения: ori
#include <stdio.h>

#define ARR_SIZE 4

int
main (int argc, char *argv) {
    (void) argc; (void) argv;

    int massive[ARR_SIZE];
    scanf ("%i %i %i %i", &massive[2], &massive[1], &massive[3], &massive[0]);
    for (int i = 0; i < ARR_SIZE - 1; i++) {
        int j = i + 1;
        do {
            if (massive[j] < massive[i]) {
                int temp = massive[i];
                massive[i] = massive[j];
                massive[j] = temp;
            }
            j++;
        } while (j < ARR_SIZE);
    }
    
    for (int k = 0; k < ARR_SIZE; k++) {
        printf("%d\n", massive[k]);
    }
}
→ Ссылка