Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Kleines Anfängerproblem (versteh ich aber echt nicht)

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.09.2004, 14:21 Uhr
~Benny
Gast



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

int main ()
{

int i,k;
char ende[5] = "nein";

clrscr();

while (ende == "nein")
{
  clrscr();

  printf ("Ende (ja/nein):");
  scanf ("%s",ende);

}




Mit einem strcmp funktioniert eine Abfrage, warum nicht mit 'while (ende == "nein")' ?

Dieser Post wurde am 14.09.2004 um 14:33 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.09.2004, 14:38 Uhr
Pablo
Supertux
(Operator)


weil == mit char* keine Inhalte prüft, sondern die Adresse, auf die beiden Pointer zeigen.


C++:
char x[10];
char y[10];

strcpy(x, "Hallo");
strcpy(y, "Hallo");

if (x==y)
{
    printf("Gleich");
} else
{
    printf("Ungleich");
}




wird immer Ungleich sagen. Der Grund ist, dass x==y vergelicht die Adressen, wo sich x[0] und y[0] befinden. Und die Adressen sind offensichtlich ungleich.

Eine Zeichenkette wie "Hallo" ist nicht anderes als ein char Array, das nach 'o' eine '\0' hat. Deshabl bringt == auch nichts, weil es wieder Adressen vergliechen werden.

strcpy vergleich Zeichenweise und gibt die Entfernung zurück, deshalb speichern 2 char* die gleiche Zeichenkette, wenn strcpy 0 zurückgibt.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 14.09.2004 um 14:38 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.09.2004, 14:38 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



C++:
while(!strcmp(ende,"nein"))...



wenn er dir ne endlosschleife draus machen will hilft vielleicht ein fflush(stdin) innerhalb der schleife...
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 14.09.2004 um 14:38 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.09.2004, 15:27 Uhr
(un)wissender
Niveauwart


fflush(stdin) geht nur unter windows...
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.09.2004, 23:12 Uhr
~Benny
Gast


Vielen dank, ich habe zwar festgestellt, dass ich mit == keinen Vergleich von STrings machen kann war mir aber noch nicht im klaren warum. Ihr habt mir mal wieder viel geholfen.

Adee, bis dann

Grüßer Benny


Denke: --Topic Closed--
 
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: