Als Anfänger habe ich mit einigen der Funktionen der Bibliothek string.h
gespielt und habe einige Probleme bezüglich der Funktion strcmp
.C: Arbeiten mit strcmp
Ich schrieb das Programm zwei Strings verglichen. Wenn sie gleich sind, gibt es andernfalls YES
und NO
zurück.
#include <stdio.h>
#include <string.h>
int main() {
char a[100];
char b[15] = "hello";
fgets(a, 100, stdin);
int compare;
compare = strcmp(a, b);
if(compare == 0) {
printf("YES");
}
else {
printf("NO");
}
return 0;
}
Nachdem es noch läuft, wenn ich Eingabe von der Tastatur ein hello
ich eine NO
bekommen. Wenn ich die Zeile printf("%d", compare)
anschließe, stellt sich heraus, dass ich für irgendeinen Eingang eine 1
bekomme, das heißt, das Stoppzeichen in a
ist größer als das in b
.
Wo ist mein Fehler?
Das Problem ist nicht mit 'strcmp' die Zeichenfolge mit einer anderen Zeichenfolge die folgende Art und Weise zu vergleichen, sondern mit dem, was [' fgets'] (http://en.cppreference.com/w/c/io/fgets) funktioniert und wie es funktioniert. –
Es funktioniert mit gcc on tio. Sie können [versuchen Sie es hier] (https: // tio.run/Nexus/c-gcC# bY @ @ xDoMgEIZ3nuJCF0xMg0Mna7eu7dCpMQ6IqCSABnFqfHYLarRDb DCf9/d/TefpOFqrARcB1fJ7tze0K9kpWmChqRxoJk0JIIPQuCDt8wCyxNKi/QQyjy5FJABboVSHU5Xtm6EGwiLwdMxhE0m2kphMO90z6zYlO3nh/j9XPehr9zxmuz1DOjuJkTv3bqa4Pf9haPV07S8Qg3iH/h4HtySrHCjNUBTNM3zcsEX). – izlin
@izlin: Das würde bedeuten, dass tio keine kompatible Standardbibliothek zur Verfügung stellt. – Olaf