C - Vergleichen von numerischen Strings

8

Was ist aus fachlicher Neugierde der sicherste / schnellste / effizienteste Weg, um zwei vollständig numerische Strings in C zu vergleichen?

%Vor%     
Valdogg21 17.06.2011, 18:08
quelle

6 Antworten

9

strcmp () meiner Meinung nach, da es keine numerischen Konvertierungen benötigt. Aber in diesem Fall müssen Sie sicherstellen, dass einer von ihnen einen String speichert, der nur numerische Zeichen enthält.

Sie können auch memcmp () für die Zeichenfolge

eingeben

EDIT1

Wie von anderen auf die führenden Nullen hingewiesen, können Sie die führenden Nullen manuell durchsuchen und strcmp () oder memcmp () aufrufen, indem Sie einen Zeiger auf die erste Ziffer ungleich Null übergeben.

EDIT2

Der folgende Code sagt, was ich sagen möchte. Dies ist nur für Ganzzahlen, nicht für Fließkommazahlen.

%Vor%

Bei Gleitkommazahlen sollten die nachgestellten Nullen nach dem Dezimalpunkt manuell ausgeschnitten werden.

Oder machen Sie das ganze manuell.

EDIT4

Ich möchte auch, dass Sie sich diesen Code für Gleitkommazahlen anschauen. Dies erkennt führende Nullen vor dem Dezimaltrennzeichen und nachgestellte Nullen nach dem Dezimaltrennzeichen. Zum Beispiel

00000000000001.10000000000000 und 1.1 sind Equal für den folgenden Code

%Vor%

Muss vor der Verwendung getestet werden.

    
phoxis 17.06.2011, 18:11
quelle
4

str(n)cmp ist der schnellste und sicherste.

    
cnicutar 17.06.2011 18:10
quelle
0

Angenommen, Sie suchen nach identischen Informationen, wird strncmp am schnellsten und sichersten sein, da es einen direkten Vergleich ohne Conversions ermöglicht. Es wird auch allgemein als sicherer angesehen als strcmp .

Wenn Sie jedoch möchten, dass 00 und 0 gleich sind oder andere Möglichkeiten, die gleiche Zahl leicht anders darzustellen, müssen Sie atoi verwenden.

    
Alan Geleynse 17.06.2011 18:12
quelle
0

Meiner Meinung nach wäre der "sicherste" Weg wahrscheinlich, beide Argumente in Ganzzahlen zu konvertieren und dann zu testen, da auf diese Weise das mögliche Problem der führenden Nullen vermieden wird. Es ist jedoch wahrscheinlich nicht die schnellste oder effizienteste Methode.

    
JAB 17.06.2011 18:13
quelle
0

Sie können einfach Folgendes verwenden:

if (strcmp ("123", "123") == 0)

{

%Vor%

}

else

{

%Vor%

}

Meiner Meinung nach sollte es funktionieren.

    
Sanjay Rajpal 17.06.2011 18:36
quelle
0

Ich schlage diesen Weg für ganze Zahlen vor:

%Vor%     
Kevin Peron 26.02.2012 16:55
quelle

Tags und Links