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:
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:
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.