Was macht strcmp() genau zurück in C?
Ich schrieb diesen code in C:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main()
{
char string1[20];
char string2[20];
strcpy(string1, "Heloooo");
strcpy(string2, "Helloo");
printf("%d", strcmp(string1, string2));
return(0);
}
Sollte die Konsole drucken Wert 1 oder Unterschied zwischen ASCII
Werte o
und \0
Charakter, d.h. 111? Auf diese website, es steht geschrieben, das sollte out-put-111, aber wenn ich es auf meinem laptop, es zeigt 1. Warum?
strcmp gibt -1 zurück (weniger als 0), 0 (gleich) oder 1 (grösser als 0). Eine Möglichkeit, dies heraus zu finden ist auf google
Es hängt von der Umsetzung.
Ihre Antwort ist falsch. es hängt von der implemenattion wenn es gibt
tutorialspoint.com/ansi_c/c_strcmp.htm
Peter Miehl3. Ich habe noch nie gesehen oder gehört eine Implementierung, die gibt etwas anderes als 0, < 0 > 0. Ich weiß nicht glauben Sie, aber... Q: können Sie zitieren einen link, der auf eine?
man strcmp
. ANMERKUNGEN: 1) Ihre "website" ist schief. 2) strcmp() erwartet einen C-string (null-terminiertes char-array); nicht eine einzelne "char" - Wert.Es hängt von der Umsetzung.
Ihre Antwort ist falsch. es hängt von der implemenattion wenn es gibt
-1
es kann auch der Unterschied in der ascii-Wertetutorialspoint.com/ansi_c/c_strcmp.htm
Peter Miehl3. Ich habe noch nie gesehen oder gehört eine Implementierung, die gibt etwas anderes als 0, < 0 > 0. Ich weiß nicht glauben Sie, aber... Q: können Sie zitieren einen link, der auf eine?
InformationsquelleAutor Akhil Raj | 2016-01-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vom die cppreference.com Dokumentation
Wie Sie sehen können, es sagt nur negativ, null oder positiv sein. Sie kann nicht zählen auf alles andere.
Die Website, die Sie verknüpft, ist nicht falsch. Es sagt Ihnen, dass der Rückgabewert ist
< 0
,== 0
oder> 0
und es gibt ein Beispiel und zeigt die Ausgabe. Es sagt nicht, die Ausgabe sollte111
.InformationsquelleAutor bolov
Zu zitieren, die man-Seite:
In anderen Worten, Sie sollten verlassen Sie sich nie auf die genaue return-Wert
strcmp
(andere als0
natürlich). Die einzige Garantie ist, dass der return-Wert wird negativ, wenn der erste string ist "kleiner" positiv, wenn der erste string ist "größer" oder0
wenn Sie gleich sind. Die gleichen Eingaben können zu generieren unterschiedliche Ergebnisse auf verschiedenen Plattformen mit unterschiedlichen Implementierungen vonstrcmp
.InformationsquelleAutor Mureinik
strcmp
gibt 'einen Wert kleiner als 0', wenn die Zeichenkette1 alphabetisch kleiner als string2;zero
, wenn Sie gleich sind; und eine 'Wert größer als 0' wenn string 1 ist alphabetisch größer als string 2.InformationsquelleAutor Peter Miehle
Die Ausgabe hängt von der Implementierung. Eine anständige Umsetzung der
strcmp
Funktion wäre:Den oben genannten Umsetzung gibt -1 zurück, wenn s1 < s2, 1, wenn s1 > s2 und 0, wenn s1 = s2.
Aber in der Regel, es ist eine schnellere version, die für den tatsächlichen Einsatz:
Beachten Sie, dass dies ist schneller, da es überspringt die Verzweigung, die getan wurde, zuvor. Also, wir haben in der Regel die Konvention, dass ein negativer Rückgabewert bedeutet, dass
s1
ist lexikographisch kleiner alss2
, und ein positiver Wert bedeutet Umgekehrt.strcmp
in einer Bibliothek wurden optimiert, viel mehr stark, siehe stackoverflow.com/questions/44874690/...InformationsquelleAutor Aseem Raj Baranwal
zurückkehren wird, einen Wert kleiner, gleich oder größer als 0 ist. Wenn es 0 zurückgibt, bedeutet es, dass die beiden Zeichenfolgen gleich sind, wenn Sie einen Wert zurückgibt-Moll als 0, es zeigt an, dass str1 ist kleiner als str2 ist. Wenn gibt es einen Wert > 0, bedeutet es, dass str2 weniger als str1.
Ihren return-Wert ist 1, weil "Heloooo" ist ein Zeichen mehr, dann "Helloo".
In der Tat, das Wort Helloo hat 6 Zeichen und Heloooo hat 7 Zeichen. Genau ein char mehr.
InformationsquelleAutor Claudio Cortese
Grundsätzlich
strcmp()
kann Folgendes zurück:> 0
wenn der 2. string ist kleiner als der erste 1. string.char s1, s2;
strcpy (s1, "helloworld");
strcpy (s2, "world");
int check = strcmp (s1, s2);
0
wenn die übergebenen strings gleich sind.char s1, s2;
strcpy (s1, "hello");
strcpy (s2, "hello");
int check = strcmp (s1, s2);
In diesem Fall als strings gleich sind, überprüfen haben
0
.< 0
wenn der erste string kleiner als der zweite string.char s1, s2;
strcpy (s1, "hello");
strcpy (s2, "worldhello");
int check = strcmp (s1, s2);
Also in deinem Fall,
strcmp ()
zurück1
als die strings sind nicht gleich.Check-out diese und diese tutorials über
strcmp ()
.InformationsquelleAutor Ashish Ahuja