2016-11-15 1 views
2

Wie kann ich diese beiden Zeichenarrays vergleichen, um sicherzustellen, dass sie identisch sind?Vergleichen von 2-Zeichen-Arrays

char test[10] = "idrinkcoke" 
char test2[10] = "idrinknote" 

Ich denke for loop zu verwenden, aber ich habe irgendwo gelesen, dass ich sonst

in C tun test[i] == test2[i] könnte nicht würde ich wirklich schätzen, wenn jemand dabei helfen könnte. Vielen Dank.

+3

'strcmp gleich sind (a, b) == 0 'ist das, was Sie suchen . –

+1

Sie können 'test [i] == test2 [i]' ausführen, da es sich um Zeichenvergleiche handelt.aber um den String zu vergleichen, müssen Sie die Funktion 'strcmp()' – Haris

+0

verwenden, also in meinem Fall 'strcmp (test [i], test2 [i])'? – ThomasWest

Antwort

5

aber ich habe irgendwo gelesen, sonst, dass ich tun Test konnte nicht [i] == test2 [i] in C.

Das ist wirklich schmerzhaft sein würde Zeichen-für-Zeichen wie das zu vergleichen. Wie Sie zwei Zeichen-Arrays (Strings) vergleichen wollen hier, sollten Sie strcmp statt:

if(strcmp(test, test2) == 0) 
{ 
    printf("equal"); 
} 

Edit:

  • Es gibt keine Notwendigkeit, die Größe angeben, wenn Sie die Zeichen-Arrays initialisieren. Dies wäre besser:

    char test[] = "idrinkcoke";
    char test2[] = "idrinknote";

  • Es ist auch besser wäre, wenn Sie strncmp verwenden - was sicherer ist im allgemeinen (wenn ein Zeichenfeld passiert NOT NULL-termini sein).

    if(strcmp(test, test2, sizeof(test)) == 0)

+0

Ich verstehe. Das wusste ich vorher nicht. Vielen Dank. – ThomasWest

2

können Sie die Funktion C-Bibliothek verwenden strcmp

So:

if strcmp(test, test2) == 0

Vom documentation on strcmp:

Vergleicht die C-Zeichenfolge str1 mit der C-Zeichenfolge str2.

Diese Funktion beginnt mit dem Vergleich des ersten Zeichens jeder Zeichenfolge. Wenn sie einander gleich sind, wird mit den folgenden Paaren fortgesetzt, bis sich die Zeichen unterscheiden oder bis ein abschließendes Nullzeichen erreicht ist.

Diese Funktion führt einen Binärvergleich der Zeichen durch. Informationen zu einer -Funktion, die länderspezifische Regeln berücksichtigt, finden Sie unter strcoll.

und auf dem Rückgabewert:

0 zurück, wenn der Inhalt der beiden Strings

+0

Ich würde gerne einige persönliche Erfahrungen von beiden Unternehmen sowie azubi-Seite in Bezug auf Ihre Arbeitsplatzfrage teilen, aber ich kann das nicht auf q/a tun. Wenn Sie sich für ein Gespräch interessieren, schreiben Sie mir bitte eine E-Mail. :) – simbabque