2016-06-19 4 views
0

Я пытаюсь получить мой код, чтобы заполнить массив внутри структуры данными из файла.Слишком мало аргументов error

На данный момент он не компилируется, просто указывая на ошибку, которая находится в названии.

Я надеюсь, чтобы понять это, чтобы я мог продолжать работать над кодом, но последние 4 часа ничего не сделали для меня ...

#include <stdio.h> 
#include <stdlib.h> 

#define MAX 100 

FILE *fp; 
FILE *fpIn; 
FILE *fpOut; 

typedef struct { 
    char first[7]; 
    char initial[1]; 
    char last[9]; 
    char street[16]; 
    char city[11]; 
    char state[2]; 
    char zip[5]; 
    int age; 
    char sex[1]; 
    int tenure; 
    double salary; 
    } workers; 

void readFile(); 
void strsub (char buf[], char sub[], int start, int end); 

int main() 
{ 

     if (!(fpIn = fopen("payfile.txt", "r"))) 
    { 
     printf("payfile.txt could not be opened for input."); 
     exit(1); 
    } 
    if (!(fpOut = fopen("csis.txt", "w"))) 
    { 
     printf("csis.txt could not be opened for output."); 
     exit(1); 
    } 

    return 0; 
} 

void readFile() 
{ 
    char buf[MAX]; 
    while(!feof(fpIn)) 
    { 
     fgets(buf, MAX, fpIn); 
     strsub(buf, workers[i].first, 0, 6); 
     strsub(buf, workers[i].initial, 8, 8); 
     strsub(buf, workers[i].last, 10, 18); 
     strsub(buf, workers[i].street, 20, 35); 
     strsub(buf, workers[i].city, 37, 47); 
     strsub(buf, workers[i].state, 49, 50); 
     strsub(buf, workers[i].zip, 52, 56); 
     strsub(buf, workers[i].age, 58, 59); 
     strsub(buf, workers[i].sex, 61, 61); 
     strsub(buf, workers[i].tenure, 63, 63); 
     strsub(buf, workers[i].salary, 65, 70); 
    } 
} 

void strsub (char buf[], char sub[], int start, int end) 
{ 
    int i, j; 

    for (j=0, i=start; i <= end; i++, j++) 
    { 
     sub[j] = buf[i]; 
    } 
    sub[j] = '\0'; 
} 
+0

забыл упомянуть код ошибки поступает из первой функции strsub в Funtion ReadFile –

ответ

0

Я установил так, что ваша программа компилируется, но она до сих пор вопросы. Мне пришлось прокомментировать несоответствие типа, но, по крайней мере, это компиляция, так что у вас есть над чем работать.

#include <stdio.h> 

#include <stdio.h> 
#include <stdlib.h> 

#define MAX 100 

FILE *fp; 
FILE *fpIn; 
FILE *fpOut; 

typedef struct { 
    char first[7]; 
    char initial[1]; 
    char last[9]; 
    char street[16]; 
    char city[11]; 
    char state[2]; 
    char zip[5]; 
    int age; 
    char sex[1]; 
    int tenure; 
    double salary; 
} workers; 

void readFile(); 
void strsub (char buf[], char sub[], int start, int end); 

int main() 
{ 

    if (!(fpIn = fopen("payfile.txt", "r"))) 
    { 
     printf("payfile.txt could not be opened for input."); 
     exit(1); 
    } 
    if (!(fpOut = fopen("csis.txt", "w"))) 
    { 
     printf("csis.txt could not be opened for output."); 
     exit(1); 
    } 

    return 0; 
} 
workers array[8]; 
void readFile() 
{ 
    int i =0; 
    char buf[MAX]; 
    while(!feof(fpIn)) 
    { 
     fgets(buf, MAX, fpIn); 
     strsub(buf, array[i].first, 0, 6); 
     strsub(buf, array[i].initial, 8, 8); 
     strsub(buf, array[i].last, 10, 18); 
     strsub(buf, array[i].street, 20, 35); 
     strsub(buf, array[i].city, 37, 47); 
     strsub(buf, array[i].state, 49, 50); 
     strsub(buf, array[i].zip, 52, 56); 
     strsub(buf, array[i].age, 58, 59); 
     strsub(buf, array[i].sex, 61, 61); 
     strsub(buf, array[i].tenure, 63, 63); 
     //strsub(buf, array[i].salary, 65, 70); 
    } 
} 

void strsub (char buf[], char sub[], int start, int end) 
{ 
    int i, j; 

    for (j=0, i=start; i <= end; i++, j++) 
    { 
     sub[j] = buf[i]; 
    } 
    sub[j] = '\0'; 
} 
+1

чем была проблема в последнем strsub? – Prince

+0

@Prince В последней строке 'strsub' существует несоответствие типов между' double' и 'char'. OP также не объявлял переменную 'i' и не объявлял массив, что давало ошибку компиляции. –

+0

Знаменитый программист 400 –

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