C баз данных. Не полностью заполняет двоичный файл - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть файл data.txt, в котором каждое поле отделено вкладкой. Я читаю переменную из файла и записываю в двоичный файл. Проблема заключается в том, что двоичный файл заполнен не полностью.

people_dump. c:

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include "person.h"

int readperson(person *p){
        return scanf("%[^\t]\t%d\t%[^\t]\t%d\t%[^\t]\t%d\t%[^\t]\t%d\t%d\t%d\t%[^\t]\n",
        p->Name,&p->NumCPU,p->TypeCPU,&p->SizeRAM,p->TypeGPU,&p->SizeGPU,p->TypeHDD,&p->NumHDD,&p->SizeHDD,&p-> Peripheral,p->NameOS);
}

int main(int argc, char* argv[]){
        person p;
        FILE *out = fopen(argv[1],"w");
        if(!out){
                perror("Can't open file");
                return 2;
        }
        while(readperson(&p)){
                fwrite(&p,sizeof(p), 1,out);
                return 0;
        }
}

Person.h:

#ifndef __person_h__
#define __person_h__
typedef struct{
        char Name[50];
        int NumCPU;
        char TypeCPU[50];
        int SizeRAM;
        char TypeGPU[50];
        int SizeGPU;
        char TypeHDD[50];
        int NumHDD;
        int SizeHDD;
        int Peripheral;
        char NameOS[50];
} person;
#endif

Терминал:

rusya@DESKTOP:~/stud/sem2/kp6$ gcc persons_dump.c
rusya@DESKTOP:~/stud/sem2/kp6$ ./a.out data.bin < Data.txt
rusya@DESKTOP:~/stud/sem2/kp6$ cat data.bin
Aminov  0          ﱠ0          ` a         Intel Core i5   6       external       `  `   SATA    1       500     2       Linux
Arapov  2        SATA    1       1000    4       Windows/Linux
Bakshe   8 a                 0      0              0  0
rusya@DESKTOP:~/stud/sem2/kp6$ cat Data.txt
Aminov  4       Intel Core i5   6       external        2       SATA    1       500     2       Linux
Arapov  2       Intel Core i3   4       interior        2       SATA    1       1000    4       Windows/Linux
Baksheev        4       Intel Core i5   8       external        4       SATA    1       1000    2       Windows/Linux
Belov   6       Intel Core i7   8       external        4       SATA    1       1000    4       Windows/Linux
Velesov 4       Intel Core i7   6       external        6       SATA    1       2000    2       Windows/Linux
Gaptulkhakov    6       Intel Core i7   8       interior        4       SATA    1       1000    2       Windows/Linux
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...