2015-08-15 3 views
-2

Это мой код:структуры и функции

#include <stdio.h> 
#include <stdlib.h> 
#include "A3sale.h" 
#include <string.h> 

FILE* openRead(char fName[]); 
FILE* openWrite(char fName[]); 
int setArray(FILE *fp, struct salesPerson sRec[]); 
void calcPay(struct salesPerson sRec[], float rate[], int recNum); 
void writePay(struct salesPerson sRec[], int recNum, FILE *filpay); 

main() { 
    float rate[5] = {0.02, 0.04, 0.06, 0.08, 0.10}; 
    int recNum=0; 
    struct salesPerson salesR[1000]; 
    FILE *filepsales, *fileppay; 
    filepsales=openRead("sales.dat"); 
    fileppay=openWrite("pay.txt"); 
    recNum=setArray(filepsales,salesR); 
    calcPay(salesR,rate,recNum); 
    writePay(salesR,recNum,fileppay); 
    fclose(filepsales); 
    fclose(fileppay); 

    return 0; 
} 

FILE* openRead(char fName[]){ 
    FILE *filepsales2=NULL; 
    filepsales2= fopen(fName, "r"); 
    if (filepsales2 == NULL) { 
     printf("Cannot open %s \n",fName); 
     exit(1); 
    } 
    printf("File: %s, opened",fName); 
    return filepsales2; 
} 

FILE* openWrite(char fName[]){ 
    FILE *fpPay=NULL; 
    fpPay= fopen(fName, "w"); 
    if (fpPay == NULL) { 
     printf("Cannot open %s , Exiting Program \n",fName); 
     exit(1); 
    } 
    printf("File: %s, opened\n",fName); 
    return fpPay; 
} 

int setArray(FILE *fp, struct salesPerson sRec[]) { 

    int j=0; 
    while(fscanf(fp,"%d:%[^:]:%[^:]:%d:%lf%*c",&sRec[j].salesNum, sRec[j].lastName, 
       sRec[j].firstName,&sRec[j].salesRate, &sRec[j].salesAmount)==5) 
     j++; 
    return j; 
} 

void calcPay(struct salesPerson sRec[], float rate[], int recNum) { 
    int j; 
    for(j = 0;j < recNum; j++){ 
     sRec[j].salesPay = 200 + (sRec[j].salesAmount * rate[sRec[j].salesRate]); 
    } 
} 

void writePay(struct salesPerson salesR[], int recNum, FILE *filep){ 
    int incriment; 
    fprintf(filep,"        Weekly Payment Report\n"); 
    fprintf(filep,"--------------------------------------------------------------------------------\n"); 
    fprintf(filep,"| SNum | Last Name   | First Name   | Lvl | Sales Amt | Week Pay |\n"); 
    fprintf(filep,"================================================================================\n"); 
    for(incriment= 0 ; incriment < recNum ; incriment++){ 
     fprintf(filep,"--------------------------------------------------------------------------------\n"); 
    } 
} 

И я получаю ошибки, как это:

C:\Users\billy\Desktop\New folder\Assignment3.c|33|warning: 'struct salesPerson' declared inside parameter list [enabled by default]| i dont understand whats happening?

C:\Users\billy\Desktop\New folder\Assignment3(1).c|43|error: type of formal parameter 2 is incomplete|

+2

Похоже, что 'struct salesPerson' не определен нигде до его использования. –

+1

Я подозреваю опечатку в «salesPerson», но не могу точно знать, не видя «A3sale.h» – user3386109

+0

Что такое 'A3sale.h'? –

ответ

0

Ваша первая ошибка struct объявлен в списке параметров функции

int setArray(FILE *fp, struct salesPerson sRec[]); 

Так что я думаю, что вы не объявили struct перед этим прототипом.

Также о вас, как правило, используется struct salesPerson sRec[], прежде чем определять его, так как здесь находится неполный тип. Таким образом, вы должны заполнить тип перед его использованием.

+0

Большое вам спасибо, что у меня «SalesPerson» в моем a3sale.h, но в функциях, которые я делал salesPerson –

Смежные вопросы