Sábado 14 de Diciembre de 2024, 17:41
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Problema Guardar Registros
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Problema Guardar Registros (Leído 1274 veces)
Iganguli
Miembro activo
Mensajes: 51
Nacionalidad:
Problema Guardar Registros
«
en:
Viernes 14 de Marzo de 2008, 13:53 »
0
hola tengo dudas en este programa lo que tiene que hacer es leer datos de 2 archivos y combinarlos en uno mismo asi por ejemplo el archivo empleados tiene
1,jose,10
2,luisa,20
3,juan,5
y el archivo departamento tiene
10,sistemas
5,administracion
20,soporte
entonces en el archivo bueno.txt deberia guardar
1,jose,sistemas
2,luisa,soporte
3,juan,administracion
el prolema es que si lee bien los registros del archivo empleado y departamento pero al momento de guardarlos al 3 archivo ya no lo guarda si alguien e echa una mano gracias
Código: Text
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 125
char archivo1[]="C:\\empleados.txt";
char archivo2[]="C:\\departamento.txt";
char archivo3[]="C:\\bueno.txt";
typedef struct {
int ID;
char nombre[30];
int depto;
}empleado;
typedef struct {
int depto;
char nom_dep[30];
}departamento;
typedef struct {
int ID;
char nombre[30];
char depa[30];
}combina;
empleado separar(char *temporal)
{
empleado emp;
memset(emp.nombre,' ',30);
char aux[]=",";
char *tmp;
tmp=strtok(temporal,aux);
emp.ID=atoi(tmp);
tmp=strtok(NULL,aux);
strcpy(emp.nombre,tmp);
tmp=strtok(NULL,aux);
emp.depto=atoi(tmp);
printf("\n%d %s %d",emp.ID,emp.nombre,emp.depto);
return emp;
}
departamento separar2(char *temporal)
{
departamento dep;
memset(dep.nom_dep,' ',30);
char aux[]=",";
char *tmp;
tmp=strtok(temporal,aux);
dep.depto=atoi(tmp);
tmp=strtok(NULL,aux);
strcpy(dep.nom_dep,tmp);
printf("\n%d %s",dep.depto,dep.nom_dep);
return dep;
}
int main()
{
FILE *arch1, *arch2, *arch3;
char temporal[MAX];
int i=0,k,tame=0,tamd=0;
empleado tempor[10];
departamento tempo[10];
combina aux[10];
arch1=fopen(archivo1,"r+");
arch2=fopen(archivo2,"r+");
if(arch1==NULL || arch2==NULL)
printf("Error de apertura");
else
{
fgets(temporal,MAX,arch1);
while(!feof(arch1))
{
tempor[i]=separar(temporal);
fgets(temporal,MAX,arch1);
i++;
}
tempor[i]=separar(temporal);
tame=i++;
i=0;
fgets(temporal,MAX,arch2);
while(!feof(arch2))
{
tempo[i]=separar2(temporal);
fgets(temporal,MAX,arch2);
i++;
}
tempo[i]=separar2(temporal);
tamd=i++;
}
for(int j=0;j<tame;j++)
{
aux[i].ID = tempor[i].ID;
strcpy(aux[i].nombre ,tempor[i].nombre );
for(int k=0;k<10;k++)
if(tempor[i].depto==tempo[k].depto)
strcpy(aux[i].depa,tempo[k].nom_dep );
}
arch3=fopen(archivo3,"w+");
if(arch3!=NULL)
{
for(int j=0;j<tame;j++)
{
fwrite(&aux[j],90,1,arch3);
}
}
else printf("No se pudo abrir el 3 archivo\n");
fclose(arch1);
fclose(arch2);
fclose(arch3);
system("pause");
return EXIT_SUCCESS;
}
Tweet
Iganguli
Miembro activo
Mensajes: 51
Nacionalidad:
Re: Problema Guardar Registros
«
Respuesta #1 en:
Viernes 14 de Marzo de 2008, 14:04 »
0
al paracer tenia mal mas que eso pero ya lo resolvi pero ahora como lo guardo ya que nada mas guarda el nombre y el area pero el id no de nuevo alguien que me eche la mano
Código: Text
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 125
char archivo1[]="C:\\empleados.txt";
char archivo2[]="C:\\departamento.txt";
char archivo3[]="C:\\bueno.txt";
char *tmp;
typedef struct {
int ID;
char nombre[20];
int depto;
}empleado;
typedef struct {
int depto;
char nom_dep[20];
}departamento;
typedef struct {
int ID;
char nombre[20];
char depa[20];
}combina;
empleado separar(char *temporal)
{
empleado emp;
memset(emp.nombre,' ',20);
tmp=strtok(temporal,",");
emp.ID=atoi(tmp);
tmp=strtok(NULL,",");
strcpy(emp.nombre,tmp);
tmp=strtok(NULL,",");
emp.depto=atoi(tmp);
printf("\n%d %s %d",emp.ID,emp.nombre,emp.depto);
return emp;
}
departamento separar2(char *temporal)
{
departamento dep;
memset(dep.nom_dep,' ',20);
tmp=strtok(temporal,",");
dep.depto=atoi(tmp);
tmp=strtok(NULL,"\n");
strcpy(dep.nom_dep,tmp);
printf("\n%d %s",dep.depto,dep.nom_dep);
return dep;
}
int main()
{
FILE *arch1, *arch2, *arch3;
char temporal[MAX];
int i=0,j,k,tame=0,tamd=0;
empleado tempor[10];
departamento tempo[10];
combina aux[10];
arch1=fopen(archivo1,"r+");
arch2=fopen(archivo2,"r+");
if(arch1==NULL || arch2==NULL)
printf("Error de apertura");
else
{
fgets(temporal,MAX,arch1);
while(!feof(arch1))
{
tempor[i]=separar(temporal);
fgets(temporal,MAX,arch1);
i++;
}
tempor[i]=separar(temporal);
tame=i++;
i=0;
fgets(temporal,MAX,arch2);
while(!feof(arch2))
{
tempo[i]=separar2(temporal);
fgets(temporal,MAX,arch2);
i++;
}
tempo[i]=separar2(temporal);
tamd=i++;
}
for(i=0;i<=tame;i++)
printf("%d %s %d \n",tempor[i].ID,tempor[i].nombre,tempor[i].depto);
for(i=0;i<=tamd;i++)
printf("%d %s \n",tempo[i].depto,tempo[i].nom_dep);
for(j=0;j<=tame;j++)
{
aux[j].ID = tempor[j].ID;
memset(aux[j].nombre,' ',21);
memset(aux[j].depa,' ',21);
strcpy(aux[j].nombre ,tempor[j].nombre );
for(k=0;k<=tamd;k++)
if(tempor[j].depto==tempo[k].depto)
strcpy(aux[j].depa,tempo[k].nom_dep );
}
for(i=0;i<tame;i++)
{
printf("%s %s %d \n",aux[i].nombre,aux[i].depa,aux[i].ID);
}
arch3=fopen(archivo3,"w+");
if(arch3!=NULL)
{
for(j=0;j<tame;j++)
{
fwrite(&aux[j],sizeof(combina),1,arch3);
}
}
else printf("No se pudo abrir el 3 archivo\n");
fclose(arch1);
fclose(arch2);
fclose(arch3);
system("pause");
return EXIT_SUCCESS;
}
Iganguli
Miembro activo
Mensajes: 51
Nacionalidad:
Re: Problema Guardar Registros
«
Respuesta #2 en:
Domingo 16 de Marzo de 2008, 07:29 »
0
bueno ahora si creo que ya encontre el problema y le cambie el fwrite al fpintf les anexo el codigo por si ha alguien le interesa
Código: Text
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 125
char archivo1[]="C:\\empleados.txt";
char archivo2[]="C:\\departamento.txt";
char archivo3[]="C:\\bueno.txt";
char *tmp;
typedef struct {
int ID;
char nombre[20];
int depto;
}empleado;
typedef struct {
int depto;
char nom_dep[20];
}departamento;
typedef struct {
int ID;
char nombre[20];
char depa[20];
}combina;
empleado separar(char *temporal)
{
empleado emp;
tmp=strtok(temporal,",");
emp.ID=atoi(tmp);
tmp=strtok(NULL,",");
strcpy(emp.nombre,tmp);
tmp=strtok(NULL,"\n");
emp.depto=atoi(tmp);
printf("\n%d %s %d",emp.ID,emp.nombre,emp.depto);
return emp;
}
departamento separar2(char *temporal)
{
departamento dep;
tmp=strtok(temporal,",");
dep.depto=atoi(tmp);
tmp=strtok(NULL,"\n");
strcpy(dep.nom_dep,tmp);
printf("\n%d %s",dep.depto,dep.nom_dep);
return dep;
}
int main()
{
FILE *arch1, *arch2, *arch3;
char temporal[MAX];
int i=0,j,k,tame=0,tamd=0,band;
empleado tempor[10];
departamento tempo[10];
combina aux[10];
arch1=fopen(archivo1,"r+");
arch2=fopen(archivo2,"r+");
if(arch1==NULL || arch2==NULL)
printf("Error de apertura");
else
{
fgets(temporal,MAX,arch1);
printf("leyendo empleados\n");
while(!feof(arch1))
{
tempor[i]=separar(temporal);
fgets(temporal,MAX,arch1);
i++;
}
//fgets
tame=i++;
i=0;
fgets(temporal,MAX,arch2);
printf("leyendo depto\n");
while(!feof(arch2))
{
tempo[i]=separar2(temporal);
fgets(temporal,MAX,arch2);
i++;
}
tamd=i++;
}
printf("\n\n");
for(i=0;i<tame;i++)
printf("%d %s %d \n",tempor[i].ID,tempor[i].nombre,tempor[i].depto);
printf("\n\n");
for(i=0;i<tamd;i++)
printf("%d %s \n",tempo[i].depto,tempo[i].nom_dep);
printf("\n\n");
for(j=0;j<tame;j++)
{
aux[j].ID = tempor[j].ID;
memset(aux[j].nombre,' ',21);
memset(aux[j].depa,' ',21);
strcpy(aux[j].nombre ,tempor[j].nombre);
band=0;
for(k=0;k<=tamd;k++)
{
if(tempor[j].depto==tempo[k].depto)
{
strcpy(aux[j].depa,tempo[k].nom_dep );
band=1;
}
}
if(band==0)
strcpy(aux[j].depa,"Desconocido");
}
for(i=0;i<tame;i++)
{
printf("%s %s %d \n",aux[i].nombre,aux[i].depa,aux[i].ID);
}
arch3=fopen(archivo3,"w+");
if(arch3!=NULL)
{
for(j=0;j<tame;j++)
{
fprintf(arch3,"%s %s %d \n",aux[j].nombre,aux[j].depa,aux[j].ID);
}
}
else printf("No se pudo abrir el 3 archivo\n");
fclose(arch1);
fclose(arch2);
fclose(arch3);
system("pause");
return EXIT_SUCCESS;
}
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Problema Guardar Registros