Работа с файлами: "excepted primary expression before '[' token" - C (СИ)
Формулировка задачи:
Выдает ошибку в 40 строчке "excepted primary expression before '[' token"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Autonoma
{
int numurs;
float cena;
char nosaukums[50];
};
int massk()
{
FILE * fails;
fails = fopen ("katalogs.txt", "r");
int lines=0;
char ch;
rewind(fails);
while(!feof(fails))
{
ch = fgetc(fails);
if(ch == '\n')
{
lines++;
}
}
return lines;
fclose(fails);
}
void fill_noma(struct cat[])
{
FILE * fails;
fails = fopen ("katalogs.txt", "r");
int massk=0;
while (!feof (fails))
{
fscanf (fails, "%d %s %f", &cat [massk].numurs, &cat [massk].nosaukums, &cat [massk].cena);
massk++;
}
fclose(fails);
}
void print_noma(int sk, struct cat[sk]){
int g;
for(g=0;g<sk;g++) {
printf ("%d. ", g);
printf ("%d ", cat[g].numurs);
printf ("%s ", cat[g].nosaukums);
printf ("%.2feur\n\n", cat[g].cena);
}
}
void pasutijums(int sk, int grozs[sk] , struct Autonoma cat[sk])
{
int lietNr,i;
float summa=0;
printf("Ievadiet jusu lietotaja ID:\n");
scanf("%d", &lietNr);
char failNos[20];
sprintf(failNos, "%d", lietNr);
strcat(failNos, ".txt");
FILE * pas;
pas = fopen (failNos, "w+");
fprintf(pas, "Cien. Lietotaj nr %d\nJusu pasutijums ir pienjemts un driz tiks apstradats :)\nJus pasutijat sekojosas proceduras:\n", lietNr);
for(i=0;i<sk;i++)
{
if(grozs[i]!=0)
fprintf(pas, "uz %d reizem %s",grozs[i], cat[i].nosaukums);
summa+=grozs[i]*cat[i].cena;
}
fprintf(pas, "\nUn summa ir %.2f!",summa);
fclose(pas);
}
int main()
{
int sk=massk()+1;
int grozs[sk], iziet=4, npk, masssk, i, j;
float summa=0;
for(i=0;i<sk;i++)grozs[i]=0;
struct Autonoma noma[sk];
fill_noma(&noma);
do{
printf("Iziet: 0\nParadit katalogu: 1\nPievienot grozam: 2\nParadit grozu: 3\nRediget grozu: 4\nVeikt pasutijumu: 5\n");
for(j=0; j<sk; j++)
{ printf(" %d", grozs[j]);}
scanf("%d", &iziet);
system("cls");
switch(iziet)
{
case 1:
print_noma(sk, &noma);
break;
case 2:
printf("1.Pedikirs \n 2.Manikirs \n 3.Solarijs \n 4.Meikaps \n 5.Sejas maska \n 6. Frizura \n");
printf("Ievadiet proceduras Nr: ");
scanf("%d", &npk);
printf("Ievadiet sk: ");
scanf("%d", &masssk);
grozs[npk-1]=masssk;
break;
case 3:
for(i=0;i<sk;i++)
{
if(grozs[i]!=0)
{
printf("uz %d reizem %s",grozs[i], noma[i].nosaukums);
summa=grozs[i]*noma[i].cena; //
printf("\nSumma: %.2f\n", summa);
}
}
break;
case 4:
printf("Ievadiet, kuru proceduru velaties iznemt no groza:\n");
scanf("%d", &npk);
printf("Ievadiet proceduru sk:\n");
scanf("%d", &masssk);
grozs[npk-1]=masssk;
break;
case 5:
pasutijums(sk, &grozs, &noma);
}
}while(iziet!=0);
}Решение задачи: «Работа с файлами: "excepted primary expression before '[' token"»
textual
Листинг программы
void fill_noma(struct Autonoma *cat[])