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);
}
}