do-while schleife in C

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/do-while_schleife_in_c_182822/page_1 - zur Vollversion wechseln!


Qualle schrieb am 25.07.2007 um 21:38

so steht das in meinem buch.


idx=0;/*7 C:\Dev-Cpp\do while.cpp `idx' undeclared (first use this function) (erst wenn ich hier ein short davor setzte, wird der fehler nicht mehr angezeigt)*/
do
{
printf("a[%d]='%c'\n",idx,a[idx]);
}
while(a[idx++]);




ich habe den code so abgeändert:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
char a;
short idx=0;
do
{
printf("a[%d]='%c'\n",idx,a[idx]); /*10 C:\Dev-Cpp\do while.cpp invalid types `char[short int]' for array subscript */
}
while(a[idx++]);
}

hab den abschnitt im buch jetzt fünf mal gelesen und komme einfach nicht dahinter was das problem an der sache ist.


Burschi1620 schrieb am 25.07.2007 um 21:41

was willst du tun?
das was du tust is gerade auf den index idx des vermeindlichen char arrays a zuzugreifen. Geht aber net weil a kein array ist.
btw, du machst da irgendwie ne endlosschleife


that schrieb am 25.07.2007 um 21:41

Das sagt dir eh der Compiler: Du kannst ein char nicht als Array mit eckigen Klammern ansprechen.


mat schrieb am 25.07.2007 um 21:42

beispiel 1: eh klar, jede variable muss vor der verwendung deklariert werden (zB: short idx;)

beispiel 2: a ist falsch deklariert.

muss zB char a[10] sein.


Qualle schrieb am 25.07.2007 um 21:46

schau gleich mal ob´s funktioniert thx!

ja geht thx!!!!!


Qualle schrieb am 25.07.2007 um 21:59

char a[10] durchläuf 01234 also 5* die schleife wieso nicht 11*?


that schrieb am 25.07.2007 um 22:14

Weil du nichts ins Array geschrieben hast und zufällig an der 5. Position eine 0 steht?


daisho schrieb am 25.07.2007 um 22:18

Haha, nice :D
Aber wirklich schön ist es ja wenn du in der Schule so etwas machst, es zufällig funktioniert und wenn der Lehrer dann kontrolliert und das Programm plötzlich faxxen macht :p


Burschi1620 schrieb am 25.07.2007 um 22:21

nunja, ein hoch auf die initialisierung.

Nochmals mein rat: Was man versteht kann man besser verwenden


Qualle schrieb am 25.07.2007 um 22:24

jetzt hab i des verstanden.

while (a[idx++]); a steht für a!=0 und des hab ich übersehen.
hab die ganze zeit nach einem abbruch befehl ausschau gehalten.


that schrieb am 25.07.2007 um 22:32

Zitat von Qualle
while (a[idx++]); a steht für a!=0

nicht ganz. Genauer ist es: while ((a[idx++]) != 0);


Marcellus schrieb am 14.08.2007 um 19:36

Und wenn wir gleich dabei sind, ein string (char array) wird üblicherweise miteinem '\0' terminiert und du solltest
1. das wirklich als terminierung verwenden und
2. auf while(a[idx++]!='\0'); testen




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025