Работа с файлами: "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[])

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5