Inhalt eines Arrays überprüfen

Gast #2105959
Lesenswert?

Hallo,
ich möchte gerne den Inhalt eines Arrays überprüfen.
Allerdings klappt das noch nicht so wie ich mir das vorstelle.
Mein Array, char daten[12], will ich gerne auf eine bestimmte 
Zeichenfolge überprüfen. Über eine for-Schleife kopiere ich den Inhalt 
in das Array daten.
Nun will ich sichergehen, dass die einkopierten Daten nicht die 
Zeichenfolge
024566669865 ist. Im Grunde müsste das doch einfacher weise so zu 
bewerkstelligen sein.

    if (daten[] != {"024566669865"})
    {
        .
        .
        .
    }

Klappt allerdings nicht. Muss ich das erst mit Hilfe von itoa() 
umwandeln?
Vielen Dank
Gast #2105972
Lesenswert?

hallo,
vielen dank für die schnelle antwort. kann es dabei nicht zu problemen 
kommen, wenn ich den inhalt auf "000000000000" untersuchen will. strcmp 
beendet doch beim asuftreten einer null ihre funktion, oder?
Gast #2106040
Lesenswert?

Nun gur,
ich könnte das auch so bewerkstelligen. Je größer die Werte werden, 
desto höher ist halt auch der Schreibaufwand.

if( !(  (daten[0] == '0' ) &&
  (daten[1] == '0' ) &&
  (daten[2] == '0' ) &&
  (daten[3] == '0' ) &&
  (daten[4] == '0' ) &&
  (daten[5] == '0' ) &&
  (daten[6] == '0' ) &&
  (daten[7] == '0' ) &&
  (daten[8] == '0' ) &&
  (daten[9] == '0' ) ) )

Muss ich mein Array also erst mittels itoa() umwandeln, sodass ich das 
so schreiben kann

         if(daten != "0000000000"){
                .
                .
                .
         }

Gibt es noch ein weitere Möglichkeit, wie die von Stefan beschriebene 
Vorgehensweise?

VG
Gast #2106197
Lesenswert?

strcmp() kannst du nicht benutzen, weil deine Zeichenfolge 13 Zeichen 
hat (12 Ziffern plus Nullbyte) und dein Array daten nur 12 Positionen. 
ABER es gibt eine andere Bibliotheksfunktion die du benutzen kannst ODER 
du schreibst dir den Vergleich selbst...
1
#include <string.h>
2

3
// Rückgabe 1 wenn in n Zeichen erster Unterschied gefunden wird
4
// Rückgabe 0 wenn n Zeichen gleich sind
5
int vergleiche(const char *d, const char *v, size_t n)
6
{
7
  for (size_t i = 0; i < n; i++) {
8
    if ( *d++ != *v++ ) // oder d[i] != v[i]
9
      return 1;
10
  }
11
  return 0;
12
}
13

14
int main(void)
15
{
16
  char verboten[] = "024566669865"; // 12 Zeichen plus 1 Nullbyte
17
  char daten[12];
18

19
  // Hier daten füllen
20

21
  // Vergleichen #1...
22
  // Mit einer selbstgeschriebenen Funktion
23
  if ( vergleiche(daten, verboten, 12) ) {
24
    printf("%d Zeichen sind ungleich!\n", 12);
25
  } else {
26
    printf("%d Zeichen sind gleich!\n", 12);
27
  }
28
  
29
  // Vergleichen #2...
30
  // Mit einer Standardfunktion aus string.h
31
  // http://www.nongnu.org/avr-libc/user-manual/group__avr__string.html
32
  if ( memcmp(daten, verboten, 12) ) {
33
    printf("%d Zeichen sind ungleich!\n", 12);
34
  } else {
35
    printf("%d Zeichen sind gleich!\n", 12);
36
  }
37
}

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