C: Werte in ein Array speichern und überlaufen lassen
-
Hallo,
Mein Problem:
Ich kriege von meinem Mikrocontroller mehrere Spannungswerte, je nachdem in welcher Stellung sich mein Potentiometer befindet. Diese Werte hab ich ausgelesen und auf meinem Display einzeln dargestellt. Nun möchte ich gerne diese Werte in ein Array speichern. Der Array muss 100 Werte aufnehmen können. Erhalte ich mehr Werte, sollen die ersten Werte überschrieben werden.
Bis jetzt hab ich keine Idee wie ich das machen soll.Ich wäre für Tipps oder Lösungen sehr dankbar
LG
-
@ElTurino was soll C: im C++ Forum bedeuten?
-
ein Fehler meinerseits. Denk dir das C einfach weg
-
-
@ElTurino
Ich weiss nicht was da die Schwierigkeit sein soll. Einfach machen. z.B.constexpr size_t VALUE_COUNT = 100; int values[VALUE_COUNT]; int write_index = 0; void add_value(int v) { values[write_index] = v; write_index++; if (write_index >= VALUE_COUNT) write_index = 0; }
-
Ja das hat alles soweit geklappt. Vielen Dank dafür.
Jetzt hab ich noch ein anderes Problem. Und zwar hab ich ein paar Werte in einen Array reingeschrieben, aber das Array befindet sich in meiner Funktion, Wie kann ich das Array von meiner Funktion an mein Main zurückgeben am einfachsten.Danke
-
@ElTurino Vll. den Array ausserhalb der Funktion definieren? Oder versteh ich deine "Funktion" falsch?
-
@ElTurino sagte in C: Werte in ein Array speichern und überlaufen lassen:
Wie kann ich das Array von meiner Funktion an mein Main zurückgeben am einfachsten.
Wenn das Array eine fixe Grösse hat die zum Zeitpunkt der Übersetzung feststeht, dann kannst du es einfach in eine struct reinpacken:
struct MyResult { int myArray[100]; }; MyResult myFunction() { MyResult res; // ... return res; }
Dabei wird das Array halt rumkopiert. Je nachdem wie gross es ist, kann das u.U. unerwünscht sein.
Wenn man die Kopie vermeiden möchte, ist eine gängige Variante dass man einen Zeiger auf den Anfang des Arrays und die Länge des Arrays der Funktion über Parameter übergibt.
void myFunction(int* values, size_t valueCount) { // ... }