Моя программа не может читать и отображать содержимое в файле - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть задание, в котором мне нужно создать программу для чтения (в двоичном режиме) файла, а затем отобразить их на экране. Я запускаю его в режиме командной строки. Вот мой исходный код:

#include <stdio.h>
#include <stdlib.h>
#define MAXWORD 130
typedef struct Node node;
struct Node
{
    int stt;
    char name[50];
    char phonenumber[20];
    char email[50];
};
int checktoread(FILE *datain)
{
    return (datain == NULL);
}
int readfile(FILE *datain, node *item)
{
    int i = 0;
    while(fread(&item[i], sizeof(node), 1, datain)>0)
    {
        i++;
    }
    return i;
}
void display(node *item, int max)
{
    int i = 0;
    for(; i < max; i++)
    {
        printf("%-3d%-30s%-20s%-30s\n", item[i].stt, item[i].name, item[i].phonenumber, item[i].email);
    }
}

int main(int argv, char *argc[])
{
    if (argv != 2)
    {
        printf("Wrong syntax\nCorrect Syntax: readfile <source file>\n");
        exit(1);
    }
    FILE *fp = fopen(argc[1], "rb");
    if(checktoread(fp))
    {
        printf("The source file is unable to be opened\n");
        exit(1);
    }
    node *person = (node*) malloc(30*sizeof(person));
    int maxline = readfile(fp, person);
    printf("%d\n", maxline);
    display(person, maxline);
    fclose(fp);
    free(person);
    return 0;
}

Моя проблема в том, что этот файл ничего не возвращает или не отображает. Здесь нет синтаксической ошибки, подтверждаю. Я не знаю, где я ошибаюсь. На самом деле, я думаю, что это неправильно на этапе преобразования данных из файла в массив.

Файл начинается так

1007 *
...