problema con programa de ficheros en c

Iniciado por Quake-man, 10 Septiembre 2010, 17:03 PM

0 Miembros y 1 Visitante están viendo este tema.

Quake-man

Hola el caso es que tengo es te programa en c corriendo en win7 cuando llega a la etapa de pedirme el teléfono y el móvil y apreto enter me aparece el programa software proff dejo de funcionar por que ¿esta bien el programa? :P


//Beta del software proff

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



int alumn;//contiene el numero de alumnos a introduzir
int num_alumn;//num de veces a repetir el bucle principal
int eleccion;//variable que contiene la elecion de las notas

struct alumnos{
     
      char nombre[50];
      int edad;
      char direccion[50];
      int telefono;
      char docentes[50];
      char notas[30];
      };//structura para almacenar los datos de los alumnos

int main(int argc, char *argv[])
{ char  i[3]="i\0";
 char instrucciones[2];
 printf("si desea ver las instrucciones del programa presione \"i\"si desea seguir de largo presione cualquier tecla.\n\n");
 gets(instrucciones);
 strcmp(instrucciones,i);
 if(strcmp(instrucciones,i)==0){
                                   
                                    system("cls");
                                    printf("\n\t\t\t\tinstrucciones\n\t\t\t\t______________\n\nEste Software es una Agenda electronica capaz de almacenar datos de personas para hacerles la vida mas facil lo unico que tienen que hacer es introducir el numero de alumnos que quieren introducir y a apartir de ahi se les pediran los datos de cada alumno nombre,apellido,telefono etc..una vez acabado el registro de alumnos se almazenara en archvos independientes con el nombre del usuario y con la extension que alla elejido.\n\npresione cualquier tecla para proseguir...\n");
                                    getch();
                                    fflush(stdin);
                                    }
     
     
     
     
 
 FILE *fp;  
 system("cls");
 printf("\t\t\t\t*registro de alumnos*\n________________________________________________________________________________\n\n");                                          
 printf("cuantos alumnos desea introduzir?\n\n");
 scanf("%i",&alumn);
 fflush(stdin);
 struct alumnos  datos[alumn];//declaración de la variable que accede a la structura especificada en el caso alumnos
 printf("\a\nNota:\n\ntiene que introducir el nombre y apellido mas la extension ej de extensiones .txt(bloc de notas) o .doc(microsoft word)\n");  
 getch();
 fflush(stdin);
 for(num_alumn=0;num_alumn<alumn;num_alumn++){
 
 printf("\nnombre y apellido del %i alumno:\n ",num_alumn+1);
 gets(datos[alumn].nombre);
 fflush(stdin);
 printf("\nedad de el %i alumno: \n",num_alumn+1);
 scanf("%i",&datos[alumn].edad);
 fflush(stdin);
 printf("\ndireccion del %i alumno: \n",num_alumn+1);
 gets(datos[alumn].direccion);
 fflush(stdin);
 printf("\nnumero de telefono y movil del %i alumno: \n",num_alumn+1);
 gets(datos[alumn].telefono);
 fflush(stdin);
 printf("\nintroduzca los padres o docentes del alumno num %i: \n",num_alumn+1);
 gets(datos[alumn].docentes);
 fflush(stdin);
 printf("\ndesea introduzir obserbaciones/notas del alumno? \n");
 printf("\n\n0=SI\n");
 printf("1=NO\n");
 scanf("%i",&eleccion);
 fflush(stdout);
 
 if (eleccion==0){
                 
                  printf("\nintroduzca las obserbaciones del %i alumno:\n",num_alumn+1);
                  fflush(stdin);
                  gets(datos[alumn].notas);
                  }
                 
              fp=fopen(datos[alumn].nombre,"w");  
              if (fp==NULL){
                            system("cls");
                            printf("\a\n ERROR:no se pudieron Guardar los datos");
                            getch();
                            exit(1);
                           
                            }
                             
           
         
             
      fprintf (fp, "Nombre: %s\n", datos[alumn].nombre);
      fprintf (fp, "Edad: %s\n", datos[alumn].edad);
      fprintf (fp, "Direccion %s\n", datos[alumn].direccion);
      fprintf (fp, "Telefono y movil: %s\n", datos[alumn].telefono);
      fprintf (fp, "Docentes: %s\n", datos[alumn].docentes);
      fprintf (fp, "Nota: %s\n", datos[alumn].notas);
   
      fclose(fp);
             
 }
           
    printf("\n\nsi desea editar algo lo podra hacer una vez finalizado el programa dirigiendose al directorio donde esta alojada esta aplicacion abriendo el fichero que contiene dichos datos itroducidos anteriormente\n\n");
   printf("\a\n\n******************************************\n");                        
   printf("*Gracias por usar el registro de alumnos!*\n");
   printf("******************************************\n\n");
     
   
                                                             
 system("PAUSE");   
 return 0;
}

nicolas_cof

Quake-man, te recomiendo usar las etiquetas GeSHI o code para postear codigo fuente para que sea mas legible, utiliza el boton modificar.

[code=c] Codigo fuente [/code]

[code] Codigo fuente [/code]

int main(int argc, char *argv[]) { ... }

Al no utilizar argc y argv no es necesario declararlas, quedaria de la siguiente forma...

int main( void ) { ... }

gets();

strcmp();

getch();

fflush(stdin);

Te invito a que pases por este post...

https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

system("cls");

system("PAUSE");

No es recomendable hacer llamadas al sistema para hacer una pausa en el programa, ademas sumandole que no es para nada portable. El limpiar consola tampoco es portable.

No es recomendable el uso de variables globales.

Salu10.