String in C überprüfen?
Hallo!
Ich habe ein Problem in C. Ich Frage per scanf( ) einen String ab, den ich mit char eingabe[ ] = " "; deklariert habe. Den String zu printen funktioniert nach der Eingabe ganz normal. Nur habe ich Probleme mit dem Abfragen / Überprüfen eines Strings!
Beispiel:
if(eingabe == "hello") {
printf("Hello World");
}
Dies funktioniert leider nicht. Bitte um Hilfe!
4 Antworten
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
Zum Vergleichen von Strings musst du die Funktion strcmp() benutzen.
Der "=="-Operator vergleicht die Speicheradressen der Strings, und die werden in deinem Fall immer unterschiedlich sein.
![](https://images.gutefrage.net/media/user/korbi27/1549032865620_nmmslarge__24_24_432_432_e77fdbfd72819e1658449c3349b41a9b.jpg?v=1549032866000)
![](https://images.gutefrage.net/media/user/iqKleinerDrache/1569246496760_nmmslarge__3_0_160_160_b62c7a52995284adf52d0d38e9cb1bc5.png?v=1569246497000)
eingabe ist nicht ein string sondern nur eine zahl die eine speicheradresse bezeichnet ab der das erste zeichen des strings steht, also z.B.
eingabe = 7512895
klar dass eingabe == "hello" dann nicht geht (allein schon vom Typ her). In Basic ist das anders. Da könnte man eingabe$ = "hello" vergleichen oder sogar setzen.
Du brauchst also eine Funktion, die mit der speicheradresse (hier 7512895) dir den String zusammenbastelt und das ist dann z.B. das strcmp.
![](https://images.gutefrage.net/media/user/korbi27/1549032865620_nmmslarge__24_24_432_432_e77fdbfd72819e1658449c3349b41a9b.jpg?v=1549032866000)
![](https://images.gutefrage.net/media/user/Suboptimierer/1443606504450_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1443606506000)
Probier es mal mit eingabe.equals("hello")
Wenn das nicht geht, musst du jedes Zeichen einzeln in einer Schleife überprüfen. Dazu würde ich mir dann eine Funktion bauen.
![](https://images.gutefrage.net/media/user/Suboptimierer/1443606504450_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1443606506000)
Ich habe es bei C# gefunden. Kommt jetzt darauf an, wie genau der Fragesteller getaggt hat.
https://docs.microsoft.com/de-de/dotnet/api/system.string.equals?view=netframework-4.8
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/user/korbi27/1549032865620_nmmslarge__24_24_432_432_e77fdbfd72819e1658449c3349b41a9b.jpg?v=1549032866000)
Morgen! Trifft auf die genannte Sprache C nicht zu, trotzdem danke für Ihre Bemühungen! (C# ist mir dann doch zu viel) 😂
![](https://images.gutefrage.net/media/user/Blvck/1534528664192_nmmslarge__0_0_640_640_5f9492e49fa6b687c65dd6eb92c4b822.jpg?v=1534528664000)
Versuch es mal mit if(strcmp(eingabe, "hello") == 0)
![](https://images.gutefrage.net/media/user/korbi27/1549032865620_nmmslarge__24_24_432_432_e77fdbfd72819e1658449c3349b41a9b.jpg?v=1549032866000)
Ich befürchte, das wird in der Sprache C nicht klappen.