2 Arrays miteinander vergleichen

#2756153
Lesenswert?

Hi an alle,

versuche gerade diese zuerst angenommene leichte Aufgabe zu bewältigen, 
aber ich nun komme ich absolut nicht weiter.

Ich möchte überprüfen ob 2 Arrays identisch sind.
Falls ja, soll die Zahl 7 an der 7 Segment Anzeige erscheinen.
Falls nein, soll die Zahl 8 an der 7 Segment Anzeige erscheinen.

Irgendetwas scheint aber mit der if Bedingung nicht zu stimmen. Denn es 
wird immer in den If Zweig gesprungen und die 7 angezeigt, egal ob in 
einem der beiden Arrays eine Zahl ändere oder nicht.

Weiß hier jemand von euch weiter? Viele Dank.

Die Werte der 7 Segment anzeige stimmen. Habe dies nochmal überprüft für 
den Fall, dass ich bei 8 und 7 die selben LEDs aktiviert habe. :-)

Mein Codebeispiel habe ich angehängt.
Angehängte Dateien:
Gast #2756395
Lesenswert?

aber eigentlich sollte die memcmp sache richtig sein. Da sehen ich 
keinen Fehler.

Sicher das deine Ausgabe für die anzeige richtig gehen?

auf dem PC geht dieser code:
1
int main(void) {
2

3
  // Variables
4
  char u[5] = {1, 2, 3, 4, 6}, v[5] = {1, 2, 3, 4, 5};
5

6

7
  while(1) {
8

9

10
    if (!memcmp(u, v, 5*sizeof(char))){
11
      printf("7\n");
12
    }
13

14
    else{
15
      printf("8\n");
16
    }
17
  }
18
  return 0;
19
}
#2756532
Lesenswert?

Danke für Eure Antworten. Der "Fehler" lag in der Deklaration des 
Arrays. Wobei ich nicht verstehe warum.

Zuerst hatte ich dem Array seine Werte in geschwungenen Klammern 
zugewiesen.(siehe vorherigen Quellcode) Da klappte es nicht. Erst als 
ich die Werte Zeile für Zeile zuwies, waren die Werte auch wirklich im 
Array.

Hätte nämlich versucht die Werte des Arrays in einer for Schleife 
auszugeben und da kam nichts.

Nun gehen alle Varianten die ich probiert habe.

Für alle die damit auch Probleme haben, hänge ich meinen nun 
funktionierenden Code an.

Mich würde aber abschließend noch interessieren, warum das nur mit einer 
meiner Varianten auf meinem MCU (atmega168) funktioniert? Hat hier 
jemand eine Idee? Vielleicht habe ich was falsch gemacht. Möchte 
nächstes Mal nicht wieder in die selbe Falle tappen.

Danke für Eure Unterstützung.
Angehängte Dateien:
#2756606
Lesenswert?

El Nino schrieb:
> Zuerst hatte ich dem Array seine Werte in geschwungenen Klammern
> zugewiesen.(siehe vorherigen Quellcode) Da klappte es nicht

El Nino schrieb:
> Mich würde aber abschließend noch interessieren, warum das nur mit einer
> meiner Varianten auf meinem MCU (atmega168) funktioniert? Hat hier
> jemand eine Idee? Vielleicht habe ich was falsch gemacht. Möchte
> nächstes Mal nicht wieder in die selbe Falle tappen.

Eigenes Makefile?
Persönliche Seite #2756614
Lesenswert?

El Nino schrieb:
> Zuerst hatte ich dem Array seine Werte in geschwungenen Klammern
> zugewiesen.(siehe vorherigen Quellcode) Da klappte es nicht. Erst als
> ich die Werte Zeile für Zeile zuwies, waren die Werte auch wirklich im
> Array.

Versuche es mal so:
1
char u[] = {1, 2, 3, 4, 6}, v[] = {1, 2, 3, 4, 5};

Wenn du Arrays so intilisierst, legt der Compiler die Länge des Arrays 
selbst fest.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren