Array mit String vergleichen
-
Hallo,
ich würde gerne einen Teil eines Arrays mit einem String vergleichen.
Z.B.char array_1[20]; //array enthält Daten bis [13]
char string_1="2233";ich möchte gerne, die 4 zeichen des arrays( array_1[8]-array_1[11] ) mit dem String "2233" vergleichen. Könnte mir eventuell jemand zeigen, wie es ungefähr ausschaun sollte? Falls es möglich ist.
Danke
-
Hallo,
die Funktionen, welche Du suchst sind:
strncmp()
odermemcmp()
Schau Dir mal folgenden Code an:
char array_1[20] = "01234567223323"; //array enthält Daten bis [13] char *string_1 = "2233"; int ergebnis1 = strncmp( &array_1[8], string_1, 4 ); // wenn fest 4 Zeichen geprüft werden sollen int ergebnis2 = strncmp( &array_1[8], string_1, strlen( string_1 ) ); int ergebnis3 = memcmp( &array_1[8], string_1, strlen( string_1 ) );
Grüße,
Chriss
-
Ansonsten, ein manueller Vergleich so in dieser Art:
char array_1[20] = "01234567223323"; //array enthält Daten bis [13] char *string_1 = "2233"; int zeichen_gleich = 1; for ( int i = 0; i < 4; i++ ) if ( array_1[ i + 8 ] != string_1[ i ] ) { zeichen_gleich = 0; break; }
-
Danke
&
Gruß
-
cmdev schrieb:
Ansonsten, ein manueller Vergleich so in dieser Art:
char array_1[20] = "01234567223323"; //array enthält Daten bis [13] char *string_1 = "2233"; int zeichen_gleich = 1; for ( int i = 0; i < 4; i++ ) if ( array_1[ i + 8 ] != string_1[ i ] ) { zeichen_gleich = 0; break; }
denkst du ernsthaft, du bekommst das besser hin als die macher der stdlib?
-
Nein, mit diesem Code sicher nicht. Deshalb hab ich ja zuerst auf die fertigen Funktionen verwiesen.
Nur, da ich nicht weiß, wie es um seinen Wissensstand aussieht und wie die Aufgabenstellung war, hab ich den Code nochmal selber geschrieben, damit er weiß wie's intern funktioniert.
Anhand der Frage vermute ich einen Anfänger und dem hilft es sicher mehr zu wissen, wie es denn genau funktioniert und nicht nur mit: Ruf die Funktion
do_it_all_for_me()
auf.
-
cmdev schrieb:
Anhand der Frage vermute ich einen Anfänger und dem hilft es sicher mehr zu wissen, wie es denn genau funktioniert und nicht nur mit: Ruf die Funktion
do_it_all_for_me()
auf.ja wenn man schon fummelt dann auch richtig
int is_eq_4c(char *a,char *b){ b--; return *a++ == *++b && *a++ == *++b && *a++ == *++b && *a == *b; } int is_eq_4c_ex(char *a,char *b){ return *((uint32_t*)a) == *((uint32_t*)b); }