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 );
}
#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 );
}