Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Strings vergleichen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
14.12.2003, 21:40 Uhr
lubU



Folgendes Problem,
beide Zeichenketten sollten gleich sein,
aber sind es offensichtlich nicht.


C++:
int main()
{
    char* antwort_user, antwort_richtig;
    clrscr();
    
printf("test? : ");
scanf("%s",antwort_user);
antwort_richtig = "test";

if ( antwort_user != antwort_richtig )
{
    printf("\n\nAntwort falsch");
}
    else
    {
        printf("\n\nRichtig!");
        getch();    
    }
    

getch();
return 0;
}


"Antwort Falsch" wird bei korrekter eingabe von "test" ausgegeben.

Dieser Post wurde am 14.12.2003 um 21:42 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.12.2003, 21:45 Uhr
Pablo
Supertux
(Operator)


Um C-Zeichenketten zu vergleichen muss man die Funktion strcmp (in string.h) benutzen. strcmp liefert 0, falls alle Zeichen gleich sind.

Wenn man == benutzt, dann liefert das 1 (bzw. true) wenn die Adresse der Pointer gleich ist.


C++:
#include <stdio.h>
#include <string.h>

int main()
{
    char a[]="Hallo";
    char b[6];
    strcpy(b,"Hallo"); // kopiert in b die Zeichenkette Hallo
    printf("%d ... %d\n", a==b, strcmp(a,b));
    return 0;
}



Wenn du das ausführst, bekommst du 0 ... 0. Das zeigt, dass a!=b, aber a und b haben die gleichen Zeichen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 14.12.2003 um 21:49 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.12.2003, 22:29 Uhr
lubU




C++:
#include<stdio.h>
#include<string.h>

int main()
{
    char antwort_user[100], antwort_richtig[100];
    int rueckgabewert;
    clrscr();

printf("Test? : ");
scanf("%s",&antwort_user);

antwort_richtig = "test"

rueckgabewert = strcmp(antwort_user,antwort_richtig);

if ( rueckgabewert == 0 )
            {
             printf("\n\n ja");
             getch();
            }
getch();
return 0;
}



antwort_richtig = "test" kann ja nicht gehen weil kein Arrayfeld angegeben ist.
ich möchte aber den string "test" in die benötigten arrayfelder von antwort_richtig schreiben, sodass ich die 2 Arrays dann vergleichen kann.

ich komm irgendwie nicht weiter....

Dieser Post wurde am 14.12.2003 um 22:30 Uhr von lubU editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.12.2003, 22:38 Uhr
Pablo
Supertux
(Operator)


ich lese mal deinen Code und fällt mir das auf:

Das "&" vor antwort_user brauchst du in diesem Fall nicht, weil antwort_user ein Array ist.

antwort_richtig ist ein Array und kein Pointer. antwort_richtig = "test"; ist Pointer Überweisung. Wenn du in das Array antwort_richtig speichern willst, dann benutze strcpy.


C++:
strcpy(antwort_richtig, "test"); // kopiert "test" in antwort_richtig



(Im meinem letzten Post habe ich schon gesagt, wozu strcpy gut ist)
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.12.2003, 22:48 Uhr
lubU



danke. jetzt hab ichs gerafft.

noch ne frage:
kann man groß- und kleinschreibung ignorieren,
oder bei einer Eingabe nur kleinschreibung erlauben ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
14.12.2003, 22:57 Uhr
Pablo
Supertux
(Operator)


nein, groß und klein buschtabe wird nicht ignoriert und strcmp("Hallo", "hallo") liefert -32, den Abstand zwischen 'H' und 'h'.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 14.12.2003 um 22:58 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: