Programacion en C - Archivos
#include
#include
typedef struct
{
int dia;
int mes;
int anio;
}t_fecha;
typedef struct
{
long dni;
char nombre[40];
char apell[30];
char sexo;
t_fecha fecha;
float imp;
}t_persona;
int main()
{
//declaro variables e intentoabrir archivos
t_persona info;
FILE*fpentrada=fopen("binario","rb");
FILE*fpsalida1=fopen("texto1.txt","wt");
FILE*fpsalida2=fopen("texto2.txt","wt");
//me fijo si pude abrir todo
if(fpentrada==NULL||fpsalida1==NULL||fpsalida2==NULL)
{ //imprimo cuales no se abrieron
fprintf(stderr,"Error abriendo archivo: %s %s %s\n", fpentrada? "" : "Binario",fpsalida1?"" : "texto1", fpsalida2?"" : "texto2" );
//siempre tengo que cerrar el que se abrio
if(fpentrada) fclose(fpentrada);
if(fpsalida1) fclose(fpsalida1);
if(fpsalida2) fclose(fpsalida2);
return 1; // indico error
}
// Si pude abrir todo entonces leo el archivo binario
fread(&info,sizeof(t_persona),1,fpentrada);while(!feof(fpentrada))
{
//hago lo que tengo que hacer en este caso guardo en el archivo 1
//LONG FIJA! // *tamaño del campo
fprintf(fpsalida1,"%08ld,%-29s,%*s,%c,%2d%2d%2d,%-92f\n", //-29 Aliea a la izq completa con blanco a la izq
info.dni,info.apell,sizeof(info.nombre)-1,info.nombre,info.sexo,info.fecha.dia,info.fecha.mes,info.fecha.anio,info.imp);
//LONG VARIABLE!
fprintf(fpsalida2,"%ld|%s|%s|%c|%d/%d/%d|%2f\n",
info.dni,info.apell,info.nombre,info.sexo,
info.fecha.dia,info.fecha.mes,info.fecha.anio,info.imp);
fread(&info,sizeof(t_persona),1,fpentrada);
}
fclose(fpentrada);
fclose(fpsalida1);fclose(fpsalida2);
return 0;
}
strchr(linea,'\n') //buscar en el array el caracter que le indico
puts(*Varg);//muestra una cadena de caracteres
char *strtok(char *s1, const char *s2); // Rompe la cadena s1 en segmentos o tókens. La función recorrerá la cadena en busca de alguno de los delimitadores de la cadena s2.
char *fgets(char *cadena, int n, FILE *stream); // lee como máximouno menos que el número de caracteres indicado por n desde el stream apuntado por stream al array apuntado por cadena.
char *strcpy(char *s1, const char *s2); // Copia la cadena apuntada por s2 (incluyendo el carácter nulo) a la cadena apuntada por s1
size_t strlen(const char *s); //Calcula el número de caracteres de la cadena apuntada por s.
int strncmp(const char *s1, char *s2,size_t n) //Compara los primeros n caracteres de dos cadenas.
char *strncpy(const char *s1, const char *s2, size_t n) // Copia los primeros n caracteres de s2 a s1.
char *strchr(const char *s, int c) // Devuelve un puntero a la primera ocurrencia del carácter c en la cadena de caracteres s.
char *strrchr(const char *s, int c) //Encuentra la última ocurrencia del caracter c en la cadena.char *strstr(const char *s1, const char *s2)// Localiza la primera ocurrencia de la cadena s2 en la cadena s1.
// estan en stdlib
Void * malloc(size_t cantbytes); //pide memoria al S.O
Free(void*); //libero memoria al S.O. obtenida con malloc o realloc o calloc
Realloc(direc_ant, nueva_Cant_bytes); //redimension algo que ya tengo ya sea < o >
Voidqsort(void*comienzoVector_a_Ordenar, size_t cant_elem, size_t cant_bytes, int(*temp_dnd_esta_la_func_q_ordena_este_tipo_dato)(const void*, const void*)
cortar en pedazos cada campo del archivo de texto con longitud variable
#include
#include
#include
typedef struct
{
int dia;
int mes;
int ano;
}t_fec;
typedef struct
{
long dni;
char apellido[30];
char nombre[30];
char sexo;...
Regístrate para leer el documento completo.