noch ein array prob
-
hi wieso kann mein zweiter string nicht eingegeben werden?
der erste kann ganz normal eingelesen werden aber direkt nach der eingabeaufforderung für den zweiten steht press any key... WARUM???hier ein ausschnitt aus meinem quelltext
void indizes()
{
int index=0,i=0,x=0;char quelle1[80],quelle2[80],ziel[160];
do
{cout<<"Bitte geben Sie Ihren ersten String ein: ";
cin>>quelle1[index];
index++;
}while(quelle1[index]='\0');
do
{
cout<<"Bitte geben Sie Ihren zweiten String ein: ";
cin>>quelle2[i];
i++;
}while(quelle2[i]='\0');
-
Schönes Beispiel dafür, wie man undefiniertes Verhalten erzeugt. Ich finde, sowas sollte man auch mal in eine FAQ aufnehmen.
jl schrieb:
cin>>quelle1[index];
Du bist dir schon klar, dass hier kein String eingelesen wird, sondern nur ein einzelnes Zeichen?
Kommen wir zu dem Punkt mit dem undefinierten Verhalten:
jl schrieb:
while(quelle1[index]='\0');
Du fragst hier Speicher ab, der noch nie initialisiert wurde. Wer also soll dir garantieren, dass dort '\0' steht oder auch nicht?
Das gleiche gilt auch für die zweite Schleife.
Nachtrag:
Da fällt mir doch glatt noch auf, dassjl schrieb:
while(quelle1[index]='\0');
kein Vergleich, sondern eine Zuweisung ist. Damit wird der Ausdruck immer false und deine Schleifen haben immer genau einen! Durchlauf.