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
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?
"0" ungleich '0' ungleich 0
Du solltest dich mal zum Thema Strings, Character und Zahlen etwas
einlesen...
Ein String "00" sieht im Speicher so aus: '0', '0', '\0' = 48, 48, 0
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
>Gibt es noch ein weitere Möglichkeit, wie die von Stefan>beschriebene Vorgehensweise?
Was ist an der auszusetzen?
Deine Frage mit der Null ist ja geklärt. Was gibts sonst noch für
Bedenken?
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
intvergleiche(constchar*d,constchar*v,size_tn)
6
{
7
for(size_ti=0;i<n;i++){
8
if(*d++!=*v++)// oder d[i] != v[i]
9
return1;
10
}
11
return0;
12
}
13
14
intmain(void)
15
{
16
charverboten[]="024566669865";// 12 Zeichen plus 1 Nullbyte