Crear archivos de datos con nombres diferentes desde consola

Iniciado por AndresEnriquezV, 12 Agosto 2017, 10:21 AM

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

AndresEnriquezV

Buenas noches amigos programadores, estoy realizando un proyecto en c++ sobre un programa estadistico que calcule varias cosas y recien lo estoy iniciando, quiero poder escribir yo el nombre del archivo para crearlo, mi codigo es el siguiente  :rolleyes:

Código (cpp) [Seleccionar]
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
struct datos
{
char nombre[30];
};
struct prom
{
float programacion;
float algebra;
float fisica;
float promedio;
datos est;
};
main()
{
int op, n, i;
printf("*******************************************\n* Universidad de las fuerzas armadas ESPE *\n*******************************************\n");
printf("Proyecto de programacion I\n Integrantes: \n presione una tecla para continuar");
getch();
system("cls");
printf("____________________________________________________________________________\n");
printf("| Este es un programa estadistico estructurado en base a la campana de Gauss | \n y esta diseñado para evaluar notas de alumnos de alguna istitucion educativa ");
printf("\n____________________________________________________________________________\n");
printf("Que desea realizar:\n1-Crear un nuevo archivo de evaluacion\n2-Abrir un archivo existente\n"); scanf("%d",&op);

switch(op)
{
case 1:
FILE *fp;

   fp=fopen("Notas.txt","a");
   if(fp==NULL)
   {
       printf("Error en el archivo");
       exit(-1);
   }
   else
{
system("cls");
printf("Se creo un archivo de nombre \"Notas\" en la carpeta que almacena el programa\n\n");
printf("Numero de Estudiantes: "); scanf("%d",&n);

prom nts[n];
for(i=0;i<n;i++)
{
printf("\nNombre del Estudiante No %d:",i+1);
scanf("%s",nts[i].est.nombre);
fflush(stdin);

printf("Nota de programacion: ");
scanf("%f",&nts[i].programacion);
fflush(stdin);

printf("Nota de algebra: ");
scanf("%f",&nts[i].algebra);
fflush(stdin);

printf("Nota de fisica: ");
scanf("%f",&nts[i].fisica);
fflush(stdin);

nts[i].promedio=(((nts[i].fisica)+(nts[i].algebra)+(nts[i].programacion))/3);
}
system("cls");
fprintf(fp,"\n*****Datos de los alumnos*****\n\nEstudiante\tFisica\t\tAlgebra\t\tProgramacion\t\tPromedio\n\n");
for(i=0;i<n;i++)
{
fprintf(fp,"%s\t\t",nts[i].est.nombre);
fprintf(fp,"%.3f\t\t",nts[i].programacion);
fprintf(fp,"%.3f\t\t",nts[i].algebra);
fprintf(fp,"%.3f\t\t\t",nts[i].fisica);
fprintf(fp,"%.3f\n",nts[i].promedio);
}

}
fclose(fp);
break;

}

}


en si el programa por el momento solo está desarrollado el caso 1 que recoge en una estructura los datos que se ingresen y los inserta en un archivo de nombre Notas, el caso 2 aun no lo desarrollo por este motivo: como dice esta opcion "Crear un nuevo archivo de evaluacion" quiero dar un nombre a mi archivo que se va a crear pero al realizar esto
   
Código (GeSHi) [Seleccionar]
FILE *fp;

   fp=fopen("Notas.txt","a");
   if(fp==NULL)
   {
       printf("Error en el archivo");
       exit(-1);
   }
   else
{
system("cls");
printf("Se creo un archivo de nombre \"Notas\" en la carpeta que almacena el programa\n\n");


le da automaticamente el nombre Notas al archivo y esto si se vuelve a correr no crea otro archivo si no, modifica el mismo; quiero saber como puedo yo ingresar el nombre del archivo por mi cuenta y que se cree dependiendo del nombre

MUCHAS GRACIAS POR SU ATENCION Y DE ANTEMANO GRACIAS A LOS QUE ME QUIERAN AYUDAR  ;-) ;-)

ivancea96

Esto es más C que C++ :o

Utiliza scanf para pedirle el nombre del archivo al usuario. Luego, pones la variable en el fopen y listo.

AndresEnriquezV

muchas gracias, si me funcionó, probablemente tenga mas dudas despues jaja