0 votos
por (760 puntos) en C/C++
HOLA: alguien me podria dar algunos ejemplos como manejar archivos en c++, y temas para leer, y aprender a programar c++.

espero respuestas gracias


25 Respuestas

0 votos
por (760 puntos)
mira mi codigo pero a la hora de ver los datos donde apunto no tengo nada, y me da un error a la ora de ponerle el nombre del producto, solo me da el codigo y el precio

cuando me voy a mi disco c y busco el archivo chiri no tengo los datos q ingrese anteriormente, xq sera, si ya probe con "w,a,w+,a+," y nada q ver, me guie segun loq me diste arriba, espero tu ayuda gracias:

este es mi codigo q llevo ahorita:

#include<stdio.h>

#include<conio.h>

struct {

    char nombre[25];

    int codigo;

    float precio;

    }electric;

//prototipos

void menu();

void ingresarproduct();

//funcion principal

int main()

{

  int op;

  int salir=0;

  while (salir !=1)

  {

   menu();

   scanf(&quot;%d&quot;,&amp;op);

   switch(op)

   {

    case 0:

      salir = 1;

      break;

    case 1:

      clrscr();

      ingresarproduct();

      break;

    }// final del switch

  }// fin del while

  printf(&quot;nn&quot;);

  return 0;

}//fin del menu principal

//MENU

void menu()

{

 printf(&quot;n                  ejercicio de ARCHIVOS               &quot;);

 printf(&quot;n          seleccione la operacion q desea realizar    n&quot;);

 printf(&quot;n   1  -> ingresar producto&quot;);

 printf(&quot;n   0  -> salir&quot;);

 printf(&quot;n op&quot;);

 }// fin el switch

 void ingresarproduct()

 {

  FILE *fichero;

  printf(&quot;n ingrese el nombre del producto&quot;);

  gets(electric.nombre);

  printf(&quot;n ingrese el codigo del producto&quot;);

  scanf(&quot;%d&quot;,electric.codigo);

  printf(&quot;n ingrese el precio del producto&quot;);

  scanf(&quot;%f&quot;,electric.precio);

  if ((fichero = fopen(&quot;chiri.txt&quot;,&quot;a&quot;)) == NULL) {

      printf(&quot;error el archivo no existe&quot;);

     }

  else {

  fwrite (&amp;electric, sizeof(electric),1,fichero);

  printf(&quot;n producto agregado exitosamente&quot;);

  fclose (fichero);

  }

 printf(&quot;nn&quot;);

}


0 votos
por (3.2k puntos)
La mejora y solucion a tu codigo ya lo publique en otro hilo, revisa la pagina principal, lo hice alli por que este hilo ya esta de buen tamanio.

Saludos.

Espero ganarme algunos puntos con esta solucion, haber si me sumas...


0 votos
por (3.2k puntos)
Hola Jeremias,

En base a tu codigo, mando la solucion, implemente ademas el lector de la Base De Datos, y usa fichero tipo .txt.

Que falta? pues control de excepciones como ser: que pasara si el sistema me pide un entero y yo le paso un caracter?, bueno esos detalles, espero te guste la solucion.

Nota: A mi me funciona y no me muestra nada de signos.

Creo que con esto termino mi participacion en ese hilo :|

===========================================================

#include <stdio.h>

#include <stdlib.h>

struct articulo{

char nombre[50];

int codigo;

float precio;

};

char* enteroAcadena(int val, int base){

static char buf[32] = {0};

int i = 30;

for(; val &amp;&amp; i ; --i, val /= base)

buf[i] = &quot;0123456789abcdef&quot;[val % base];

return &amp;buf[i+1];

}

void mostrarDatos(struct articulo a){

printf(&quot;DETALLE ARTICULO: n&quot;);

printf(&quot;Nombre: %sn&quot;,a.nombre);

printf(&quot;Codigo: %dn&quot;,a.codigo);

printf(&quot;Precio: %.2fn&quot;, a.precio);

}

void guardarDatos(struct articulo a){

FILE *auxf = fopen(&quot;baseDeDatos.txt&quot;,&quot;a&quot;);

fputs(a.nombre, auxf);

fputs(&quot; &quot;, auxf);

fputs(enteroAcadena(a.codigo,10),auxf);

fputs(&quot; &quot;, auxf);

char aux[50];

sprintf(aux,&quot;%.2f&quot;,a.precio);

fputs(aux, auxf);

fputs(&quot;n&quot;, auxf);

printf(&quot;Guardado Correctamente :) n&quot;);

fclose(auxf);

}

struct articulo leerArticulo(){

struct articulo algo;

printf(&quot;nNombre: &quot;);

scanf(&quot;%s&quot;, (char*)&amp;algo.nombre);

printf(&quot;nCodigo: &quot;);

scanf(&quot;%d&quot;,&amp;algo.codigo);

printf(&quot;nPrecio: &quot;);

scanf(&quot;%f&quot;,&amp;algo.precio);

return algo;

}

int menu(){

//system(&quot;clear&quot;); //linux

clrscr(); //windows

printf(&quot;========================n&quot;);

printf(&quot;1. Ingresar Producto.n&quot;);

printf(&quot;2. Leer Lista.n&quot;);

printf(&quot;3. Salir.n&quot;);

printf(&quot;========================n&quot;);

printf(&quot;Ingrese su opcion[1/2/3]_ &quot;);

int opcion;

scanf(&quot;%d&quot;,&amp;opcion);

return opcion;

}

void leerBaseDeDatos(){

FILE *aux;

if((aux = fopen(&quot;baseDeDatos.txt&quot;,&quot;r&quot;)) == NULL){

//me salgo sin hacer nada :) si no existe BD

return;

}

char cadena[80];

fgets(cadena,60,aux);

do{

printf(&quot;%sn&quot;,cadena);

}while(fgets(cadena,80,aux)!=NULL);

int uno;

printf(&quot;nPresione 1 y luego Enter para volver al menu.&quot;);

scanf(&quot;%d&quot;, &amp;uno);

fclose(aux);

}

void acciones(int opcion){

//system(&quot;clear&quot;); //linux

clrscr(); //windows

struct articulo nuevo;

switch(opcion){

case 1: nuevo = leerArticulo();

guardarDatos(nuevo);

break;

case 2: leerBaseDeDatos(); break;

case 3: exit(0); break;

default: break;

}

}

int main(){

int bandera;

while(1){

bandera = menu();

acciones(bandera);

}

return 0;

}

================================================

Espero te sirva.

Atte: Roberto


0 votos
por (760 puntos)
hasta el momento ya me ingresa datos en mi &quot;disco c&quot;, el error q tengo ahora es q la ora de modificar archivos me da un error y no lo encuentro me podrias decir donde esta el error, si fueras tam amable de corregirme pero con mi codigo q llevo asta el momento, es q no m quiero perder de donde voy, ya vi tus codigos y si estan bien, y me doy cuenta q cada persona programa diferente, espero q me ayudes

este mi codigo actual:

#include<stdio.h>

#include<conio.h>

#include<iostream.h>

struct {

    char nombre[25];

    int codigo;

    float precio;

    }electric;

//prototipos

void menu();

void ingresarproduct();

void modificarproduct();

void eliminarproduct();

void verproduct();

void imprimirproduct();

//funcion principal

int main()

{

  int op;

  int salir=0;

  while (salir !=1)

  {

   menu();

   scanf(&quot;%d&quot;,&amp;op);

   switch(op)

   {

    case 0:

      salir = 1;

      break;

    case 1:

      clrscr();

      ingresarproduct();

      break;

    case 2:

      clrscr();

      modificarproduct();

      break;

   case 3:

     clrscr();

     eliminarproduct();

     break;

  case 4:

    clrscr();

    verproduct();

    break;

  case 5:

    clrscr();

    imprimirproduct();

    break;

    }// final del switch

  }// fin del while

  printf(&quot;nn&quot;);

  return 0;

}//fin del menu principal

//MENU

void menu()

{

 printf(&quot;n                  ejercicio de ARCHIVOS               &quot;);

 printf(&quot;n          seleccione la operacion q desea realizar    n&quot;);

 printf(&quot;n   1  -> ingresar producto&quot;);

 printf(&quot;n   2  -> modificar producto&quot;);

 printf(&quot;n   3  -> eliminar producto&quot;);

 printf(&quot;n   4  -> ver producto&quot;);

 printf(&quot;n   5  -> imprimir en impresora&quot;);

 printf(&quot;n   0  -> salir&quot;);

 printf(&quot;n op&quot;);

 }// fin el switch

 void ingresarproduct()

 {

  FILE *fichero;

  cout<<&quot;n ingrese el nombre del producto:&quot;<<endl;

  cin>>electric.nombre;

  cout<<&quot;n ingrese el codigo del producto:&quot;<<endl;

  cin>>electric.codigo;

  cout<<&quot;n ingrese el precio del producto&quot;<<endl;

  cin>>electric.precio;

  if ((fichero = fopen(&quot;casa.txt&quot;,&quot;a&quot;)) == NULL) {

      printf(&quot;error el archivo no existe&quot;);

     }

  else {

  fwrite (&amp;electric, sizeof(electric),1,fichero);

  printf(&quot;n producto agregado exitosamente&quot;);

  fclose (fichero);

  }

 printf(&quot;nn&quot;);

}

void modificarproduct()

{

int codigobuscado;

int encontrado=0;

struct electric newproduct;

FILE *fichero;

FILE *ficherox;

cout<<&quot;ingrese el codigo a modificar&quot;;

cin>>codigobuscado;

if((fichero = fopen(&quot;casa.txt&quot;,&quot;r&quot;)) == NULL){

printf(&quot;n no existe el producto&quot;);

}

else {

 fread (&amp;electric,sizeof(electric),1,fichero);

 while (!feof(fichero) &amp;&amp; (encontrado !=1)){

 if (codigobuscado == electric.codigo)

 encontrado=1;

 fread (&amp;electric, sizeof(electric),1,fichero);

 }

}

fclose (fichero);

if (encontrado == 1){

newproduct.codigo = codigobuscado;

cout<<&quot;ingrese el nombre del producto:&quot;<<endl;

cin>>newproduct.nombre;

cout<<&quot;ingrese el precion:&quot;<<endl;

cin>>newproduct.precio;

if ((fichero =fopen(&quot;casa.txt&quot;,&quot;r&quot;))==NULL)

printf(&quot;error no existe&quot;);

else

{

  fread(&amp;casa, sizeof(casa),1,fichero);

  while (!feof(fichero)){

  else

  fwrite(&amp;newproduct, sizeof(casa),1,ficherox);

   fread (&amp;casa, sizeof(casa),1,fichero)

   }

   fclose (fichero);

   fclose (ficherox);

   remove(&quot;casa.txt&quot;);

   rename(&quot;casax.txt&quot;,&quot;casa.txt&quot;);

   }

  }

  else {

  printf(&quot;producto no encontrado&quot;);

  }

  printf(&quot;nn&quot;);

}

void eliminarproduct()

{

}

void verproduct()

{

}

void imprimirproduct()

{

}


0 votos
por (80 puntos)
Pasos para usar archivos:

- Declarar Puntero Fichero. FILE *punteroFichero;

- Apertura de archivo. punteroFichero=fopen(NombreArchivo,tipoAcceso);

- escribir o leer contenido de archivo. fputs(Cadena,punteroFichero); fgets(cadena.nCaracteres,punteroFichero)

- cerrar archivo. fclose(punteroFichero

Preguntas relacionadas

0 votos
6 respuestas
0 votos
1 respuesta
0 votos
0 respuestas
0 votos
0 respuestas
preguntado por jeremias10 (760 puntos) Ene 28, 2016 en C/C++
0 votos
7 respuestas
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...