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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


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

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Ayuda guardar archivos
« en: 28 Mayo 2013, 20:17 pm »

Hola que tal tengo este programa y quiero guardarlo en archivos alguien me puede decir por que no corre el programa solo quiero saber de la opcion de guardar se que el programa no es el mejor pero soy un principiante gracias



#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

struct alumnos
{
       char nombre[10];
       char estado [5];
       int edad;
};

alumnos lista[10];

int i=1;
int b,c,ver,j,w,x,op,h,nn;


alumnos altas();
alumnos bajas();
alumnos cambios();
alumnos despliegues();
alumnos guardar();

int main()
 
   {
    int t;
        FILE *archivo;
        char caracter;
        char nom[10];
        int edad1;
 
        archivo = fopen("Final.txt","r");
 
        if (archivo == NULL)
          {
 
           printf("\nError de apertura del archivo. \n\n");
          }
        else
          {
             int h=0;
             char texto[10];
             int zenb;
             while(fgets(lista[h].nombre, 10, archivo))
             {
               printf("%s", lista[h].nombre);
               fgets(texto,10,archivo);
               sscanf(texto,"%d",&zenb);
               lista[h].edad=zenb;             
               printf("%d", lista[h].edad);
               h++;
                       
             }
              fclose(archivo);
              nn=h;
              printf("%d", nn);
              getch();
          }

   do
   {
   printf("\nseleccione una de las opciones\n1.-altas===========>1\n2.-bajas===========>2\n3.-cambios=========>3\n4.-despliegues=====>4\n");
   scanf("%d",&op);
   system("cls");

       switch (op)
      {
        case 1: do
          {
           altas();
           printf("\n¿Quiere dar de alta ha alguien mas?\n");
           printf("Si la respuesta es si presione 1\npara salir presione 2\n");
           scanf("%d",&h);
          }while(h==1);
           break;
        case 2: bajas(); break;
        case 3: cambios(); break;
        case 4: despliegues(); break;
      }
    printf("Presione 1 para regresar al menu anterior\nPresione alt F4 para salir\n");
    scanf("%d",&x);

   }while(x==1);

  }
 alumnos altas()
   {
    printf("Nombre:\n ");
    scanf("%s",&lista.nombre);
    system("cls");
    FILE *fp;
     fp = fopen ("Final.txt", "a" );
     printf("Edad:\n ");
    scanf("%d",&lista.edad);
    system("cls");
    printf("Estado:\n ");
    scanf("%s",&lista.estado);
     fprintf(fp,"%s\n",lista.nombre);
     fprintf(fp,"%d\n",lista.edad);
     fprintf(fp,"%s\n",lista.estado);
       
    system("cls");
     fclose ( fp );
     alumnos guardar();
     getch();

    i++;
   
    }   

  alumnos bajas()
   {
     printf("alumno que desea dar de baja\n");
     scanf("%d",&b);
     strcpy(lista.estado,"baja");
     alumnos guardar();
   }

  alumnos cambios()
   {
     printf("Que alumno desea modificar\n");
     scanf("%d",&c);
     printf("Datos actuales:\nnombre: %s\n",lista[c].nombre);
     printf("edad: %d\n",lista[c].edad);
     printf("estado:%s",lista[c].estado);

     printf("\nIngresar nuevos datos");
     printf("\nNombre: ");
     scanf("%s",&lista[c].nombre);
     system("cls");
     printf("Edad:");
     scanf("%d",&lista[c].edad);
     system("cls");
     printf("Estado:");
     scanf("%s",&lista[c].estado);
     system("cls");
   }

  alumnos despliegues()
   {
     printf("Presione 1 para ver un dato\nPresione otra tecla para ver todos los datos\n");
     scanf("%d",&ver);
     fflush(stdin);
     if (ver==1)
       {
       printf("Alumno al cual quiere visualizar\n");
       scanf("%d",&w);
       printf("nombre: %s\n",lista[w].nombre);
       printf("edad: %d\n",lista[w].edad);
       printf("estado: %s\n",lista[w].estado);
       }
     else
       {
       printf("Todos los datos son:\n");
       for (j=1;j<=i;j++)
         {
           printf("nombre: %s\n",lista[j].nombre);
           printf("edad: %d\n",lista[j].edad);
           printf("estado: %s\n",lista[j].estado);
         }
       }
      
      }

// Esta parte no me funciona        
   alumnos guardar()
{
     FILE *fp;
     fp = fopen ("Final.txt", "w" );
      for(i=0;i<nn;i++)
            {                                 
                  if(lista.estado!=1){
                  fprintf(fp,"%s\n",lista.nombre);
                  fprintf(fp,"%d\n",lista.edad);
                  fprintf(fp,"%d\n",lista.estado);
                  }
            }
     fclose ( fp );
}
     


 


En línea

juanks92

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Ayuda guardar archivos
« Respuesta #1 en: 28 Mayo 2013, 20:41 pm »

solo me marca un error en el programa dice q c++ prohibe la comparacion entre puntero y entero


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Ayuda guardar archivos
« Respuesta #2 en: 28 Mayo 2013, 21:24 pm »

solo me marca un error en el programa dice q c++ prohibe la comparacion entre puntero y entero
Pues hijo, más claro agua. Estás comparando un puntero con un numero.

El error te dirá en que línea es, no tienes ni que buscarla.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
juanks92

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Ayuda guardar archivos
« Respuesta #3 en: 28 Mayo 2013, 21:40 pm »

solo me dice que el error esta en esta linea

if(lista.estado!=1)

pero ahi mi duda no se que hacer
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Ayuda guardar archivos
« Respuesta #4 en: 28 Mayo 2013, 21:49 pm »

Estás comparando una cadena con el valor 1?

Eso no tiene ningún sentido *_*
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
juanks92

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Ayuda guardar archivos
« Respuesta #5 en: 28 Mayo 2013, 21:51 pm »

Entonces con que lo puedo comparar
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda guardar archivos
« Respuesta #6 en: 30 Mayo 2013, 15:09 pm »

Como ya te indico amchacon el error se genera al tratar de comparar el campo estado (de tipo "char [5]") con el valor 1 (de tipo signed int).

En su lugar debes compararlo con otra cadena utilizando la función strcmp y verificando si el valor de retorno de la función es cero, si es así las cadenas son iguales. Suponiendo que utilizas "baja" para eliminar de forma lógica un registro esa función se debe cambiar a:
Código
  1. void guardar()
  2. {
  3.   FILE *fp;
  4.  
  5.   fp = fopen("Final.txt", "w" );
  6.  
  7.   for (i = 0; i < nn; i++){
  8.      // Si la cadena NO es igual a "baja" se imprime en el archivo
  9.      if (strcmp(lista[i].estado, "baja") != 0){
  10.         fprintf(fp, "%s\n", lista[i].nombre);
  11.         fprintf(fp, "%d\n", lista[i].edad);
  12.      }
  13.   }
  14.  
  15.   fclose(fp);
  16. }

Aparte de eso se deben corregir otras partes del programa, por ejemplo declaras todas las funciones con el tipo de retorno "alumnos" pero ninguna retorna un valor, hay que cambiarlas para que retornen "void".

También hay que evitar el uso de la biblioteca conio de Borland y el uso de fflush(stdin). Explicaciones del porque de ello en el tema |Lo que no hay que hacer en C/C++. Nivel basico|

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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Guardar archivos *.mov de internet
Multimedia
Azielito 3 2,089 Último mensaje 23 Octubre 2004, 06:44 am
por Songoku
Guardar Archivos Ilegibles por el usuario
Programación Visual Basic
{_The_Alwar_} 2 1,732 Último mensaje 12 Octubre 2005, 17:48 pm
por {_The_Alwar_}
Problemas al guardar y abrir archivos .dat
Programación Visual Basic
kakinets 0 1,599 Último mensaje 16 Marzo 2006, 02:10 am
por kakinets
Abrir y guardar archivos con CommonDialog
Programación Visual Basic
soru13 3 1,498 Último mensaje 26 Junio 2006, 07:20 am
por <--v1c1ous-->
Guardar archivos en escritorio Win7
Windows
WifliX 2 3,766 Último mensaje 21 Mayo 2012, 20:52 pm
por WifliX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines