我对 C 相当陌生,我正在尝试制作一个程序,在该程序中我从文本文件中获取名称和其他信息,然后将其存储在 .dat 文件中。这是我的代码:
#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);
}
文本文件的结构是这样的
Name Surname Country Points
当我运行程序然后查看 .dat 文件时,我没有得到姓名和姓氏,通常是国家的最后一个字符,然后是一个整数。例如对于
John Smith Inglaterra 290
我明白
Name:
Country: terra
Points: 1685027142
我确定问题出在字符的处理上,但我不确定确切的问题是什么。
谢谢!
答案 0 :(得分:1)
你有不同的问题: