URL: https://www.overclockers.at/coding-stuff/do-while_schleife_in_c_182822/page_1 - zur Vollversion wechseln!
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.
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
Das sagt dir eh der Compiler: Du kannst ein char nicht als Array mit eckigen Klammern ansprechen.
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.
schau gleich mal ob´s funktioniert thx!
ja geht thx!!!!!
char a[10] durchläuf 01234 also 5* die schleife wieso nicht 11*?
Weil du nichts ins Array geschrieben hast und zufällig an der 5. Position eine 0 steht?
Haha, nice
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
nunja, ein hoch auf die initialisierung.
Nochmals mein rat: Was man versteht kann man besser verwenden
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.
Zitat von Quallewhile (a[idx++]); a steht für a!=0
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