www.mikrocontroller.net

Forum: PC-Programmierung Wie string in C abfragen


Autor: GUI (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,
wie frage ich in C einen String in der if-Schleife ab?

also:


if(cstring==???)

Autor: Rene Schube (Firma: BfEHS) (rschube)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
siehe www.if-schleife.de

ansonsten strcmp, strncmp o.ä.
Was ist dein Plan?

Autor: GUI (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in der if wird ein string abgefragt:

if(cstring=="abfragestring")

nur geht das nicht mit "..." bzw. {'a','b',...}

Autor: Rene Schube (Firma: BfEHS) (rschube)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> if(cstring=="abfragestring")

int strcmp (const char *s1, const char *s)
liefert :
   0 wenn s1 gleich s2
   > 0 wenn s1 lexikografisch größer s2
   < 0 wenn s1 lexikografisch kleiner s2
also in etwa so
 if ( !strcmp(cstring,"abfragestring") )
 {
  ...
 } else {
  ...
 }

Autor: GUI (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann man nicht direkt sring arrays vergleichen?

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nicht C.

in C++ kann man std::string vergleichen.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bzw. genau genommen kannst du schon Strings vergleichen:
    if( "abc" == "def" ) ...
Das ist syntaktisch korrekt, vergleicht aber nicht die
Inhalte der Strings, sondern nur die Anfangsadressen.

Also wäre die Antwort eigentlich:
ja, du kannst sie vergleichen; das wirst du aber nicht wollen.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
GUI schrieb:
> kann man nicht direkt sring arrays vergleichen?
Doch, aber nur Zeichen für Zeichen und nichts anderes mach strcmp:
char strcmp(char *s1, char *s2){
  
  while(*s1 && *s2 && *s1 == *s2){
      s1++; s2++;
  } 
  return *s1 - *s2;
}

Autor: Rene Schube (Firma: BfEHS) (rschube)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst jede Stelle im String einzeln kontrollieren.
char szString = "abfragestring\0";

if ( cstring[0] == 'a' )
{
 ...
}

if ( cstring[14] == '\0' )
{
 ...
}

Ob das Sinn macht, kommt auf deinen genauen Einsatz an...

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weils mal wieder nötig ist:  DU MÖCHTEST UNBEDINGT EIN C-BUCH LESEN!

Da stehen alle Fragen, die du hier gestellt hast systematisch und 
vollständig erklärt drin.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.. die aus dem anderen Thread übrigens auch.

Der andere Klaus

Beitrag #3910852 wurde von einem Moderator gelöscht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.