C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

while vergleich???
Goto page 1, 2  Next
 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
M.Schneider
Guest





PostPosted: Mon Jun 07, 2004 7:51 pm    Post subject: while vergleich??? Reply with quote



warum fehlermeldung?Die while Schleife soll das erste Zeichen im
Zeichenarray test mit Q vergleichen.Wo liegt mein Fehler?

char test[100]="Tach";
..
..
while( test[0] != "Q")
{
scanf("%s",test);
..
..
irgendwas
}

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Markus Breuer
Guest





PostPosted: Mon Jun 07, 2004 9:23 pm    Post subject: Re: while vergleich??? Reply with quote



M.Schneider wrote:

Quote:
warum fehlermeldung?Die while Schleife soll das erste Zeichen im
Zeichenarray test mit Q vergleichen.Wo liegt mein Fehler?

char test[100]="Tach";
..
..
while( test[0] != "Q")
{

test[0] => Typ char
"Q" => Typ const char*

Du vergleichst einen Zeiger mit einen char.

Lösung:

while( test[0] != 'Q' )

oder

while( test[0] != ("Q")[0] )

Gruß Markus

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Martin Gieseking
Guest





PostPosted: Mon Jun 07, 2004 9:24 pm    Post subject: Re: while vergleich??? Reply with quote



"M.Schneider" <User969 (AT) gmx (DOT) de> wrote in news:ca2gvt$trg$00$1 (AT) news (DOT) t-
online.com:

Quote:
warum fehlermeldung?Die while Schleife soll das erste Zeichen im
Zeichenarray test mit Q vergleichen.Wo liegt mein Fehler?

char test[100]="Tach";
.
.
while( test[0] != "Q")


Statt "Q" sollte da 'Q' stehen. "Q" bezeichnet eine Stringkonstante, also
einen Zeiger auf const char-Array mit den Werten 'Q' und ''. Das hast Du
sicher nicht gemeint. char-Konstanten werden im Gegensatz dazu durch
einfache Anführungszeichen kenntlich gemacht.

Martin

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Thomas Abb351
Guest





PostPosted: Mon Jun 07, 2004 9:26 pm    Post subject: Re: while vergleich??? Reply with quote

1. es wäre schön, wenn du die fehlermeldung auch sagen könntest
2. es sind 2 fehler in deinem code:

a) zuweisung
Quote:
char test[100]="Tach";
richtig wäre

char test[100];
strcpy(test, "Tach");

b) vergleich
du vergleichst hier eine zeichenkette mit einem character.
richtig wäre:
while (test[0] != 'Q')

such mal unter "nullterminierende strings/zeichenketten"

thomas

Quote:
warum fehlermeldung?Die while Schleife soll das erste Zeichen im
Zeichenarray test mit Q vergleichen.Wo liegt mein Fehler?

char test[100]="Tach";
.
.
while( test[0] != "Q")
{
scanf("%s",test);
.
.
irgendwas
}

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Rolf Magnus
Guest





PostPosted: Mon Jun 07, 2004 10:33 pm    Post subject: Re: while vergleich??? Reply with quote

M.Schneider wrote:

Quote:
warum fehlermeldung?

Was sagt sie denn, die Fehlermeldung?

Quote:
Die while Schleife soll das erste Zeichen im Zeichenarray test mit Q
vergleichen.Wo liegt mein Fehler?

Darin, daß "Q" kein Zeichen ist (also nicht vom Typ char), sondern ein
Array. Es ist vom Typ const char[2], während test[0] vom typ char ist.
Verwende 'Q' statt "Q".

Quote:
char test[100]="Tach";
.
.
while( test[0] != "Q")
{
scanf("%s",test);
.
.
irgendwas
}

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Kurt Watzka
Guest





PostPosted: Tue Jun 08, 2004 3:14 am    Post subject: Re: while vergleich??? Reply with quote

Thomas Abbé schrieb:

Quote:
a) zuweisung
char test[100]="Tach";
richtig wäre
char test[100];
strcpy(test, "Tach");

In welchem Sinne ist das "richtiger" als

char test[100] = "Tach";

Warum soll die Initialisierung der restlichen 95 Elemente von test
mit '' verhindert werden?

Kurt Watzka

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Marco Budde
Guest





PostPosted: Tue Jun 08, 2004 2:10 pm    Post subject: Re: while vergleich??? Reply with quote

M.Schneider wrote:


Quote:
warum fehlermeldung?

Warum kein Realname?


Quote:
Die while Schleife soll das erste Zeichen im
Zeichenarray test mit Q vergleichen.Wo liegt mein Fehler?

char test[100]="Tach";

Wir sind hier in C++, das würde man eher in C so machen.
Nimm besser "string" statt "char"

Quote:
while( test[0] != "Q")

"Q" ist eine Zeichenkette, Du willst aber einen Buchstaben,
also 'Q'.

Quote:
scanf("%s",test);

Benutze "cin", außerdem dürfte "&test" richtiger sein.

cu, Marco

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
M.Schneider
Guest





PostPosted: Tue Jun 08, 2004 2:53 pm    Post subject: Re: while vergleich??? Reply with quote

Vielen dank, habe es kapiert.So trivial der Fehler, aber jetzt weiß ich
"test" ist ein Zeiger auf einen String bzw. ein Char array + /0.
und
't' ist ein Konstantes Zeichen.

Vielen Dank...

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Steffen Rauh
Guest





PostPosted: Tue Jun 08, 2004 4:56 pm    Post subject: Re: while vergleich??? Reply with quote

Quote:
char test[100]="Tach";
scanf("%s",test);
Benutze "cin", außerdem dürfte "&test" richtiger sein.

Soweit ich weiß nimmt scanf als zweiten Parameter eine Adresse (also
Pointer). Da "test" bereits ein Pointer auf das erste Feldelement ist,
scheint mir die Schreibweise von M. soweit korrekt. Ansonsten hättest die
Adresse der Adresse des Feldes. "&test[0]" wäre natürlich äquivalent zur
Schreibweise von M., falls du das gemeint hast - wäre in dem Fall aber nicht
"richtiger" sondern genauso "richtig".

MfG,
Steffen Rauh

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Karl Heinz Buchegger
Guest





PostPosted: Tue Jun 08, 2004 5:01 pm    Post subject: Re: while vergleich??? Reply with quote

Marco Budde wrote:
Quote:


scanf("%s",test);

Benutze "cin", außerdem dürfte "&test" richtiger sein.

Zum ersten Teil: ja
Zum zweiten Teil: nein. test war schon in Ordnung.

--
Karl Heinz Buchegger
[email]kbuchegg (AT) gascad (DOT) at[/email]

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Karl Heinz Buchegger
Guest





PostPosted: Tue Jun 08, 2004 5:12 pm    Post subject: Re: while vergleich??? Reply with quote

Steffen Rauh wrote:
Quote:

char test[100]="Tach";
scanf("%s",test);
Benutze "cin", außerdem dürfte "&test" richtiger sein.

Soweit ich weiß nimmt scanf als zweiten Parameter eine Adresse (also
Pointer). Da "test" bereits ein Pointer auf das erste Feldelement ist,

Ich weiss was Du meinst, aber trotzdem: Vorsicht wie Du es beschreibst.
'test' ist kein Pointer. 'test' ist ein Array. Bei der Parameteuebergabe
degeneriert das Array zu einem Pointer zum ersten Element. Aber 'test'
selbst ist kein Pointer.

Wollt es nur fuer die Newbies klarstellen.

--
Karl Heinz Buchegger
[email]kbuchegg (AT) gascad (DOT) at[/email]

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Steffen Rauh
Guest





PostPosted: Tue Jun 08, 2004 5:32 pm    Post subject: Re: while vergleich??? Reply with quote

Quote:
char test[100]="Tach";
scanf("%s",test);
Benutze "cin", außerdem dürfte "&test" richtiger sein.
Soweit ich weiß nimmt scanf als zweiten Parameter eine Adresse (also
Pointer). Da "test" bereits ein Pointer auf das erste Feldelement ist,
Ich weiss was Du meinst, aber trotzdem: Vorsicht wie Du es beschreibst.
'test' ist kein Pointer. 'test' ist ein Array. Bei der Parameteuebergabe
degeneriert das Array zu einem Pointer zum ersten Element. Aber 'test'
selbst ist kein Pointer.

Vom expliziten Typ her stimmt das natürlich. Implizit erfolgt aber ohne
weiteres Zutun die Konvertierung in einen Pointer - auch wenn es sich nicht
um Parameterübergaben handelt. Selbst Stroustrup sagt in 5.3 (hab grad
leider nur die deutsche Übersetzung parat):
In C++ sind Zeiger und Felder eng verwandt. Der Name eines Feldes kann als
Zeiger auf sein erstes Element benutzt werden.

In welcher Situation würde es zu Problemen führen, wenn man "vergisst" dass
test ein Array ist? Ausser beim Speichermanagement sehe ich da gerade keine
Schwierigkeiten (die sieht man aber meistens eh erst, wenn man in die Falle
reingelaufen ist Wink.

MfG,
Steffen Rauh

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Dirk Clemens
Guest





PostPosted: Tue Jun 08, 2004 8:48 pm    Post subject: Re: while vergleich??? Reply with quote

Steffen Rauh wrote:

Quote:
Vom expliziten Typ her stimmt das natürlich. Implizit erfolgt aber ohne
weiteres Zutun die Konvertierung in einen Pointer - auch wenn es sich nicht
um Parameterübergaben handelt. Selbst Stroustrup sagt in 5.3 (hab grad
leider nur die deutsche Übersetzung parat):
In C++ sind Zeiger und Felder eng verwandt. Der Name eines Feldes kann als
Zeiger auf sein erstes Element benutzt werden.

In welcher Situation würde es zu Problemen führen, wenn man "vergisst" dass
test ein Array ist? Ausser beim Speichermanagement sehe ich da gerade keine
Schwierigkeiten (die sieht man aber meistens eh erst, wenn man in die Falle
reingelaufen ist Wink.

MfG,
Steffen Rauh


Unterschiede und/oder Fehlermeldungen ergeben
sich bei den Operatoren sizeof ++ -- = += usw.
(Bei den Zuweisungen, wenn Zeiger/Array links vom
Zuweisungs-Operator stehen)


Lemmi

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Rolf Magnus
Guest





PostPosted: Tue Jun 08, 2004 9:42 pm    Post subject: Re: while vergleich??? Reply with quote

Steffen Rauh wrote:

Quote:
char test[100]="Tach";
scanf("%s",test);
Benutze "cin", außerdem dürfte "&test" richtiger sein.
Soweit ich weiß nimmt scanf als zweiten Parameter eine Adresse
(also Pointer). Da "test" bereits ein Pointer auf das erste
Feldelement ist,
Ich weiss was Du meinst, aber trotzdem: Vorsicht wie Du es
beschreibst. 'test' ist kein Pointer. 'test' ist ein Array. Bei der
Parameteuebergabe degeneriert das Array zu einem Pointer zum ersten
Element. Aber 'test' selbst ist kein Pointer.

Vom expliziten Typ her stimmt das natürlich. Implizit erfolgt aber
ohne weiteres Zutun die Konvertierung in einen Pointer - auch wenn es
sich nicht um Parameterübergaben handelt. Selbst Stroustrup sagt in
5.3 (hab grad leider nur die deutsche Übersetzung parat):
In C++ sind Zeiger und Felder eng verwandt. Der Name eines Feldes kann
als Zeiger auf sein erstes Element benutzt werden.

In welcher Situation würde es zu Problemen führen, wenn man "vergisst"
dass test ein Array ist?

void mult_matrix(int** a, int** b);

....
int matrix1[3][3];
int matrix2[3][3];
....
mult_matrix(matrix1, matrix2);

char x[] = "Hallo, Weltn";
char* y = wasweisich;
x = y;

Wer den Unterschied zwischen Array und Zeiger nicht kennt, erwartet, daß
solche Sachen funktionieren.

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Heinz Saathoff
Guest





PostPosted: Wed Jun 09, 2004 6:48 am    Post subject: Re: while vergleich??? Reply with quote

Moin,

Steffen Rauh schrieb...
Quote:
In welcher Situation würde es zu Problemen führen, wenn man "vergisst" dass
test ein Array ist? Ausser beim Speichermanagement sehe ich da gerade keine
Schwierigkeiten (die sieht man aber meistens eh erst, wenn man in die Falle
reingelaufen ist Wink.

z.B auch hier:

----- file1.cpp -----
char Test[100] = "Irgendwas";

----- main.cpp ------
#include <iostream>
extern char *Test;
int main() {
std::cout< }

---------------------

Mit viel Glück merkt der Linker das noch. Wenn nicht, dann crasht das
höchstwahrscheinlich gewaltig.

- Heinz

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.