Moving string position in array

Try something like this...

#define ARRAYSIZE 50

struct alarm {
  int time;
  char *msg;
};

struct alarm alarms[ARRAYSIZE];

char *messages[10] = {
  "alarm message 1",
  "alarm message 2",
  "alarm message 3",
  "alarm message 4",
  "alarm message 5",
  "alarm message 6",
  "alarm message 7",
  "alarm message 8",
  "alarm message 9",
  "alarm message 10",
};

int insertionPoint=0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  newAlarm(5,millis()%0xFFFF);
}

void newAlarm(int msgIndex, int time) {
  alarms[insertionPoint].time = time;
  alarms[insertionPoint].msg = messages[msgIndex];
  ++insertionPoint %= ARRAYSIZE;
}

void printAlarms() {
  for (int i=0;i<ARRAYSIZE;i++) {
    Serial.print(alarms[insertionPoint+i%ARRAYSIZE].time);
    Serial.print("  ");
    Serial.println(alarms[insertionPoint+i%ARRAYSIZE].msg);
  }
}