I'm fairly new to C and I'm trying to make a program where I take names and other information from a text file and then store it on a .dat file. Here is my code:
#include <stdio.h>
#define MAX 30
typedef struct 
{
    char nombre[MAX];
    char apellido[MAX];
    char pais[MAX];
    unsigned int puntaje;
} Treg;
void ArmaBinario (FILE *archb);
void BuscaArchivo(FILE *archb);
void main (){
    FILE *archb; 
    ArmaBinario(archb); 
    BuscaArchivo(archb); 
}
void ArmaBinario (FILE *archb){
    FILE *archt;
    Treg ranking;
    char car; 
    int i; 
    archt = fopen("datos_ej26.txt","rt");
    if (archt == NULL) {
        printf("Error al abrir el archivo: el archivo no existe.");
    }
    else{
        archb = fopen("ranking.dat","wb");
        car = fgetc(archt);
        while (!feof(archt)){
            i = 0;
            while (car != ' ') {
                ranking.nombre[i] = car;
                i++;
                car = fgetc(archt);
            }
            car = fgetc(archt); car = fgetc(archt);
            i = 0;
            while (car != ' ') {
                ranking.apellido[i] = car;
                i++;
                car = getc(archt);
            }
            car = fgetc(archt); car = fgetc(archt);
            i = 0; 
            while (car != ' ') {
                ranking.pais[i] = car;
                i++;
                car = fgetc(archt);
            }
            fscanf(archt,"%u \n",&ranking.puntaje);
            fwrite(&ranking,sizeof(Treg),1,archb); 
            car = fgetc(archt);
            
        }
    } 
    fclose(archt);
    fclose(archb); 
 }
The structure of the text file is like this
Name Surname Country Points
When I run the program and then look into the .dat file I get no name and last name, usually the last characters of the country and then just an integer. For example for
John Smith Inglaterra 290 
I get
Name: 
Country: terra
Points: 1685027142 
I'm sure the problem is in the handling of the characters, but I'm not sure what the exact issue is.
Thanks!
 
    