[ Mixxit @ 22.05.2012. 20:10 ] @
Zdravo svima! Moj problem (žao mi je što počinjem ovako, ali..) je oko kompjaliranja koda u kompajleru (ANSI C kompatibilan). Kompajler mi javlja grešku tipa: "Array dimension must be greater than 0" Pokušao sam da izguglam rešenje, ali nisam uspeo (relativni početnik sam u korišćenju C jezika ~par meseci) da ga nađem. Koliko sam shvatio čitajući razne postove sa drugih foruma o sličnim temama stekao sam utisak da kompajleru pravi problem niz sa promenljivom dužinom. Program koji pišem predstavlja modifikovanu verziju K&R kalkulatora sa inverznom poljskom notacijom. Na mom nativnom sistemu (Ubuntu - linux) tokom kompajliranja ne pravi se problem*. Tek kada pokušam da ga kompajliram u Win okruženju (moram u win okruženju da kompajliram!) javlja mi gorepomenutu grešku. Mislim da je problem u sledećoj rutini: Code: int getop(char s[]) //<- JAVLJA MI ZA OVAJ RED GREŠKU verovatno misli na char s[] { #define PERIOD '.' int i = 0; int c; int next; /* Skip whitespace */ while((s[0] = c = getch()) == ' ' || c == '\t') ; //s[1] = ' '; s[1] = '\0'; if(!isdigit(c) && c != PERIOD && c != '-') return c; if(c == '-') { next = getch(); if(!isdigit(next) && next != PERIOD) { return c; } c = next; } else { c = getch(); } while(isdigit(s[++i] = c)) c = getch(); if(c == PERIOD) /* Collect fraction part. */ while(isdigit(s[++i] = c = getch())) ; s[++i] = '\0'; if(c != '\0') ungetch(c); return NUMBER; } Ona se u glavnom programu poziva ovako: Code: while ((type = getop(s)) != EOF ) Promenljiva u pitanju je definisana u glavnom programu kao char s[20]; *Samo da napomenem da menjam odgovarajuće #include naredbe kada kompajliram u Win okruženju. Moje pitanje glasi: Da li moram da promenim način na koji definišem promenljivu s kako bi mogla da bude promenljive dužine i ako imate savet kako to da uradim? Pozdrav, Mix. |