Programacion en C - Archivos

Páginas: 5 (1074 palabras) Publicado: 9 de mayo de 2014
Leer de binario y guardar en arhivos de texto

#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;...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Programación c# archivos
  • Programación en C
  • Archivos c#
  • Archivos En C++
  • Archivos en c++
  • c++ archivos
  • Archivo en c
  • Archivos c++

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS