Компилятор игнорит gets и переходит к следующей итерации

Код выглядит так:

    #include <stdio.h>
#include <locale.h>
#include <string.h>
#include <stdlib.h>

    int main(int argc, char* argv[])
    {
        int onoff = 0;
        setlocale(LC_ALL, "Russian");
        typedef struct {
            int num;
            char mess[60];
        } cinfo;
        unsigned num = 0;
        printf("Введите число cообщений: "); scanf("%u", &num);
        cinfo numbs[num];
        printf("0 - сортировка от макс. к мин., 1 - сортировка от макс. к мин., 2 - в порядке ввода: "); scanf("%u", &onoff);
        for (unsigned i = 0; i < num; i++) {
            printf("Номер девайса: "); scanf("%u", &numbs[i].num);
            printf("Текст(до 60 символов): ");
            gets(numbs[i].mess);
            continue;
        }
        if (onoff == 1) {
            for (unsigned i = 0; i < num - 1; i++) {
                if (numbs[i + 1].num > numbs[i].num) {
                    int tmp = numbs[i].num;
                    numbs[i].num = numbs[i + 1].num;
                    numbs[i + 1].num = tmp;
                }
            }
            for (unsigned j = 0; j < num; j++) {
                printf("Rez: Device: %u ; Text: %s\n", numbs[j].num, numbs[j].mess);
            }
        }
        if (onoff == 2) {
            for (unsigned i = 0; i < num; i++) {
                printf("Rez: Device: %u ; Text: %s\n", numbs[i].num, numbs[i].mess);
                puts("---------------------------------------------");
            }
        }
        return 0;
    }

Результат:

    Введите число cообщений: 2
    0 - сортировка от макс. к мин., 1 - сортировка от макс. к мин., 2 - в порядке ввода: 1
    Номер девайса: 2
    Текст(до 60 символов): Номер девайса: 2
    Текст(до 60 символов): Rez: Device: 2 ; Text: 
    Rez: Device: 2 ; Text: 

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