Carga interactiva en un fichero

Si eres principiante y tienes alguna consulta entra en este foro.
Responder
Mensaje
Autor
patchin
Mensajes: 3
Registrado: 10/01/2019 1:13 am

Carga interactiva en un fichero

#1 Mensaje por patchin » 10/01/2019 1:21 am

Buenos días Foro. Soy nuevo en este foro pero espero que todos seamos útiles en ayudarnos.
Quiero abrir un fichero e ir introduciendo datos que se escriben por teclado, concreta mente quiero introducir los meses del año que el usuario quiera de forma dinámica.
El código que he escrito es:

Código: Seleccionar todo

int main(){
	int i = 1, j=0;
	double inflacion[6], precio=0 ;
	char mes[12], sino;
	FILE* (fichero1);
	FILE* (fichero2);
// Llenamos el fichero meses con los meses con los que trabajar
	fichero2=fopen("meses.txt","wt"); //Abriremos el fichero meses para escritura con los meses 
	for (i=1;i<=12;i++){
		printf("Introduce el mes %d a controlar ",i);
		fprintf(fichero2, "%s\n",&mes);
		printf("\n¿Quiere introducir otro mes? (S/N) ");
		scanf("%c",&sino);
		if (sino='N'){break;}
	}
	fclose(fichero2); 
//...
No consigo que me pida los datos por pantalla y los guarde en el fichero. ¿Tenéis alguna sugerencia? Gracias
Última edición por mollok el 10/01/2019 3:54 am, editado 1 vez en total.
Razón: Los códigos deben ir entre etiquetas 'code', botón </>

mollok
Mensajes: 467
Registrado: 30/01/2018 9:47 am
Ubicación: Mallorca, España

Re: Carga interactiva en un fichero

#2 Mensaje por mollok » 10/01/2019 3:56 am

Entre printf y fprintf no has hecho scanf para pedir datos.
while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}

patchin
Mensajes: 3
Registrado: 10/01/2019 1:13 am

Re: Carga interactiva en un fichero

#3 Mensaje por patchin » 11/01/2019 4:35 am

Muchas gracias por tu rápida respuesta
Ya lo he corregido y puedo introducir datos en los dos ficheros y extraerlos, pero cuando saco los datos no son del tipo adecuado y no se suman adecuadamente.
Pongo aquí mi código para ver si encontráis el problema.
Gracias.

Código: Seleccionar todo

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

int main(){
	int i = 1, j=0;
	double precio=0,variable[12];
	char mes[12], sino,inflacion[12];
	FILE* (fichero1);
	FILE* (fichero2);
// Llenamos el fichero meses con los meses con los que trabajar
	printf("Cuantos meses quiere introducir?");
	scanf("%d",&j);
	fichero2=fopen("meses.txt","wt"); //Abriremos el fichero meses para escritura con los meses 
	for (i=0;i<=j-1;i++){
		printf("Introduce el mes %d a controlar ",i);
		scanf("%s",&mes);
		fprintf(fichero2, "%s\n",mes);
	}
	fclose(fichero2); 
	
	fichero2=fopen("meses.txt","rt"); //Abriremos el fichero meses para lectura con los meses
	fichero1=fopen("inflacion.txt","wt"); //Fichero donde se guarda las inflaciones de los últimos seis meses
	for (i=0;i<=j-1;i++){
		//variable = fgetc(fichero2);
		fscanf (fichero2, "%s", &mes);
		printf("¿Cual ha sido la inflación para el mes %s ",mes);

		scanf("%s",&inflacion);
		fprintf(fichero1, "%s\n",inflacion);
	}
	fclose(fichero1); 
	fclose(fichero2); 

	fichero1=fopen("inflacion.txt","rt"); //Abrimos el fichero de inflaciones para lectura
	for (i=0;i<=j-1;i++){
		
		fscanf(fichero1,"%lf",&inflacion[i]);
		precio = precio + double(inflacion[i]);//
	}
	fclose(fichero1); 

	printf("La inflación habida en los %d meses es de ",j);
	printf("%f\n",precio);

	printf("\nFin de los cálculos.\n");
	system("pause");
	return 0;
}
Última edición por mollok el 11/01/2019 8:19 am, editado 1 vez en total.
Razón: Los códigos deben ir entre etiquetas 'code', botón </>

mollok
Mensajes: 467
Registrado: 30/01/2018 9:47 am
Ubicación: Mallorca, España

Re: Carga interactiva en un fichero

#4 Mensaje por mollok » 11/01/2019 8:24 am

Tienes inflacion como char[12], por lo tanto no puedes hacer

Código: Seleccionar todo

fscanf(fichero1,"%lf",&inflacion[i]);
ya que un tamaño de tipo char es 1 byte y el tamaño de double es de 8 bytes.
Debes crear un array de double para recibir la información.
while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}

patchin
Mensajes: 3
Registrado: 10/01/2019 1:13 am

Re: Carga interactiva en un fichero

#5 Mensaje por patchin » 11/01/2019 9:50 am

Muchas gracias. haciendo solo ese cambio lo he conseguido.
:D
Te pongo el código ya corregido por si es de interés.

Código: Seleccionar todo

/***********************************************************************************************************************
* Un vivero forestal actualiza cada seis meses los precios de la planta que vende en función de los valores oficiales de 
* inflación mensual. Desean desarrollar un programa que proporcione el precio actualizado a partir del precio anterior y 
* de los valores de inflación en cada uno de los últimos seis meses.
************************************************************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

int main(){
	int i = 1, j=0;
	double precioinicial = 0,precio=0,variable[12],inflacion[12];
	char mes[12], sino;
	FILE* (fichero1);
	FILE* (fichero2);
	printf("Cuanto cuesta el producto inicialmente ");
	scanf("%lf",&precioinicial);
// Llenamos el fichero meses con los meses con los que trabajar
	printf("Cuantos meses quiere introducir?");
	scanf("%d",&j);
	fichero2=fopen("meses.txt","wt"); //Abriremos el fichero meses para escritura con los meses 
	for (i=0;i<=j-1;i++){
		printf("Introduce el mes %d a controlar ",i);
		scanf("%s",&mes);
		fprintf(fichero2, "%s\n",mes);
	}
	fclose(fichero2); 
	fichero2=fopen("meses.txt","rt"); //Abriremos el fichero meses para lectura con los meses
	fichero1=fopen("inflacion.txt","wt"); //Fichero donde se guarda las inflaciones de los últimos seis meses
	for (i=0;i<=j-1;i++){
		//variable = fgetc(fichero2);
		fscanf (fichero2, "%s", &mes);
		printf("¿Cual ha sido la inflación para el mes %s ",mes);
		scanf("%lf",&inflacion[i]);
		fprintf(fichero1, "%lf\n",inflacion[i]);
	}
	fclose(fichero1); 
	fclose(fichero2); 
	fichero1=fopen("inflacion.txt","rt"); //Abrimos el fichero de inflaciones para lectura
	precio = precioinicial;
	for (i=0;i<=j-1;i++){
		fscanf(fichero1,"%lf",&inflacion[i]);
		precio = precio * (1+inflacion[i]/100);//
	}
	fclose(fichero1); 
	printf("La inflación habida en los %d meses es de ",j);
	printf("%f\n",precio);
	printf("\nFin de los cálculos.\n");
	system("pause");
	return 0;
}
Última edición por mollok el 11/01/2019 12:52 pm, editado 1 vez en total.
Razón: Los códigos deben ir entre etiquetas 'code', botón </>

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados