Gast
#168633
Hallo,
ich habe mir mal zwei Funktionen geschrieben, um Werte in einen
Ringspeicher zu schreiben und zu lesen.
Leider habe ich bei meinem Programm einen Speicherplatz im Ringpuffer
verschwendet, um beim Lesen feststellen zu können dass der Speicher
leer ist.
Mit ein paar zusätzlichen Abfragen und einer zusätzlichen Variablen in
der Funktion zum Ringspeicher auslesen ließe sich das sicher anders
realisieren. Wenn der Ringspeicher jedoch nur 16Bit Integer-Werte
aufnimmt, ist ja abzuwägen was im Speicher weniger Platz wegnimmt.
Vielleich hat ja jemand noch einen eleganteren Code.
Hier meine Funktionen:
void schreibeRS(int wert)
{
ringspeicher[schreibepointer++] = wert;
if (schreibepointer >= SPEICHERGROESSE)
schreibepointer = 0;
if (schreibepointer >= SPEICHERGROESSE)
schreibepointer = 0;
if (schreibepointer == lesepointer)
lesepointer++;
if (lesepointer >= SPEICHERGROESSE)
lesepointer = 0;
}
//-------------------------------------------------
int leseRS(void)
{
int wert;
wert = ringspeicher[lesepointer];
if (lesepointer == schreibepointer)
wert = LEER;
else
{
lesepointer++;
if (lesepointer >= SPEICHERGROESSE)
lesepointer = 0;
}
return wert;
}