Für den Vergleich von zwei Strings durch eine strcmp()
Funktion nahm ich eine Eingabezeichenfolge von fgets()
und cin
und eine andere ist in der Funktion als Standardargument gegeben. Aber wenn ich sie durch strcmp()
function Ausgänge vergleiche nicht übereinstimmt.Ausgabe entspricht nicht strcmp() -Funktion in c
char a[20];
int b;
cin>>a;
b=strcmp(a,"ab");
cout<<b;
wo i Eingang nehme a
als ab
und b
‚s Wert ist 0, was vollständig fine.But ist, wenn für den gleichen Eingang von fgets()
genommen wird dann strcmp()
Ausgang ist wie bisher nicht gleich.
char a[20];
int b;
fgets(a,sizeof(a),stdin);
b=strcmp(a,"ab");
cout<<b;
wo a
s-Wert 's Wert ab
und b
ist' ist 1. Warum? ist das ein Compiler-Problem oder etwas anderes?
Es ist kein Compiler-Problem. Das Problem ist, dass Sie die Dokumente nicht näher gelesen haben. [Die fgets-Funktionsdokumentation] (http://en.cppreference.com/w/c/io/fgets). Was denkst du, was der zweite Parameter tut? – PaulMcKenzie
'fgets' und' cin >> a' führen nicht zur selben Zeichenfolge. Bitte lesen Sie die Dokumentation für _both_, um ein besseres Verständnis dessen zu bekommen, was sie tun. –
@PaulMcKenzie as str enthält das Newline-Zeichen, so dass es Wert 1 gibt. Ist es richtig? –