elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pequeño inconveniente archivos/registros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pequeño inconveniente archivos/registros  (Leído 2,001 veces)
reeyesg

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Pequeño inconveniente archivos/registros
« en: 23 Enero 2014, 21:04 pm »

Buenaas mis mas cordiales saludos, tngo un pequeño inconveniente con archivos y registros, ya que le doy la opcion agregar y pongo un codigo que es el q deberia mostrar en el archivo .txt, pero solo me arroja otro numero y mientras que mas voy agregando, sale el mismo numero .. aqui les dejo el codigo para ver si me podrian ayudar.. Gracias de antemano

Ejemplo; selecciono agregar equipo, me sale insertar codigo pongo "1", marca hp, caracteristicas negras.. y cuando reviso el .txt no me sale 1 si no que me sale otra serie de numeros.. y mientras añado otro se agrega cn el mismo codigo anterior mencionado.. ese es mi problema!

Código:
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

struct datos_equipo
   {
   long codigoe;
   char marca[20];
   char caract[50];
   }equipo;

struct datos_mtto
   {
   long codigom;
   char motivo[50];
   char tipo[50];
   char area[10];
   }mtto;
void main(){
int opc;
long codigo_e;
long codigo_m;

{
clrscr();//Borrando pantalla
textcolor(WHITE);//Cambiando el color del texto
gotoxy(15,8),  cprintf("Menu de opciones");
gotoxy(10,10), cprintf("1. Agregar Equipos");
gotoxy(10,12), cprintf("2. Buscar Equipos ");
gotoxy(10,14), cprintf("3. Agregar Mantenimiento");
gotoxy(10,16), cprintf("5. Salir del Menu");
textcolor(GREEN);
gotoxy(10,20), cprintf("Que desea hacer?");
gotoxy(28,20), scanf("%i",&opc);
      textcolor(YELLOW);
      gotoxy(28,20);
switch (opc)
{

      case 1:
      FILE * eq;
      eq=fopen("equipos.txt","a");
      codigo_e= equipo.codigoe;
      printf("\n\t");
      printf("ingrese codigo de equipo:\n\t");
      scanf("%u",&equipo.codigoe);

      printf("ingrese marca:\n\t");
      scanf("%s",equipo.marca);

      printf("ingrese Caracteristicas:\n\t");
      scanf("%s",equipo.caract);

      fprintf(eq,"\n%u %s %s",&equipo.codigoe,equipo.marca,equipo.caract);

      printf("Ahora el equipo se encuentra registrado %u%s%s");

      fclose(eq);

      getch();
      break;


      case 2:
      printf("\n\tHas entrado a  buscar el equipo");
      printf("\n\t");
      printf("\n\tingrese codigo del equipo a buscar:");
      scanf("%u",&codigo_e);
      eq=fopen("equipos.txt","r");
      while(!feof(eq)){
      fscanf(eq,"%u%s%s",&equipo.codigoe,equipo.marca,equipo.caract);
      if(codigo_e==equipo.codigoe){
      printf("\n\t Equipo ncontrado :\n\t Codigo:%u\n\t Marca:%s\n\t Caracteristicas:%s\n\t",equipo.codigoe,equipo.marca,equipo.caract);
      }
      }
      fclose(eq);
      getch();
      break;


    }
   }

   getch();
   }


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Pequeño inconveniente archivos/registros
« Respuesta #1 en: 24 Enero 2014, 02:53 am »

Lo primero que debes hacer es cambiar los nombres de los encabezados por los correctos: <iostream>, <cstdio> y <cstdlib>, cambiar la definición de la función main a "int main() ..." y evitar el uso de la biblioteca conio de Borland, las razones de ello en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

Un error importante se encuentra en la primera llamada a scanf: utilizas "%u" para leer un valor de tipo "signed long" y eso no es correcto, en su lugar debes utilizar "%ld".

El error principal se encuentra en la sentencia:
Código
  1. fprintf(eq, "\n%u %s %s", &equipo.codigoe, equipo.marca, equipo.caract);
Al utilizar "&equipo.codigoe" el programa imprimirá el mismo valor en el archivo (la dirección en memoria de ese campo).

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
reeyesg

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: Pequeño inconveniente archivos/registros
« Respuesta #2 en: 24 Enero 2014, 16:58 pm »

no entendi mucho, soy nuevo en c++ ,, y bueno trate de hacer lo q me dice y me da error :s!
En línea

reeyesg

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: Pequeño inconveniente archivos/registros
« Respuesta #3 en: 24 Enero 2014, 17:12 pm »



El error principal se encuentra en la sentencia:
Código
  1. fprintf(eq, "\n%u %s %s", &equipo.codigoe, equipo.marca, equipo.caract);
Al utilizar "&equipo.codigoe" el programa imprimirá el mismo valor en el archivo (la dirección en memoria de ese campo).

Un saludo


Listo mano, ese era el problema un millon de gracias ya solucione :$ ;-) :D.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Archivos, Registros en c/c++
Programación C/C++
programador10 3 6,213 Último mensaje 14 Junio 2011, 16:11 pm
por programador10
Pequeño inconveniente
Foro Libre
ANTRUCK 1 2,019 Último mensaje 10 Agosto 2011, 10:54 am
por Randomize
Pedido o ayuda ARCHIVOS/REGISTROS
Programación C/C++
reeyesg 1 1,806 Último mensaje 10 Febrero 2014, 18:40 pm
por ivancea96
ayuda con registros y archivos .txt en C++
Programación C/C++
chiripita 3 3,810 Último mensaje 4 Agosto 2014, 10:25 am
por eferion
Problema - Registros y archivos
Programación C/C++
jaxoR 6 3,149 Último mensaje 6 Noviembre 2014, 13:33 pm
por eferion
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines