Dev - C++ - leer escribir datos en archivos txt en c++

 
Vista:
sin imagen de perfil

leer escribir datos en archivos txt en c++

Publicado por Nelmer (2 intervenciones) el 02/11/2015 22:33:45
No puedo escribir datos de tipo int en un archivo txt, alguien podria ayudarme este es codigo que tengo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
using namespace std;
 
int main(int argc, char** argv) {
 
	char nombre[40];
 
	int edad;
 
	FILE*archivo=fopen("file.txt", "w+");
 
	cout<<"Ingrese un nombre: ";
	cin>>nombre;
	fprintf(archivo,nombre);
 
 
	cout<<"Ingrese su edad: ";
	cin>>edad;
	fprintf(archivo,edad);
 
 
 
	return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

leer escribir datos en archivos txt en c++

Publicado por aguml (522 intervenciones) el 03/11/2015 00:26:52
fprintf (archivo,"%s",nombre);
fprintf (archivo,"%d",edad);
Esa es la manera correcta y no te olvides de cerrar con:
fclose (archivo);

Y ahora la pregunta ¿por qué no usas las funciones que c++ pone a tu alcance para hacerlo?
1
2
3
4
5
oftream archivo;
archivo.open ("nombre.txt");
archivo << nombre;
archivo << edad;
archivo.close ();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

leer escribir datos en archivos txt en c++

Publicado por Nelmer (2 intervenciones) el 03/11/2015 00:40:58
grasias por resp. Sabe en realidad estoy haciendo un programa que calcule la nota final de 4 bimestre de un estudiante, quiero que el programa calcule la nota final promediandolo, y a la vez guardad las notas en un archivo de texto, nesecito ayuda el problema que tengo es que al momento de escribir en el archivo txt la nota q se ingresa no quiere escribir en el archivo txt, me sale error a lo que entendi es que no es tipo char y por eso no quiere, porfavor si pudieras ayudarme grasias aqui mando todo el codigo.
error.>63 28 C:\Users\Nelmer\Desktop\PROYECTO FERIA\NotaFinalEst\main.cpp [Error] invalid conversion from 'int' to 'const char*' [-fpermissive]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <conio.h>
 
#include <sstream>
 
 
using namespace std;
 
int main(int argc, char *argv[])
{
 
	// titulo del programa
	cout<<"\n-------------------------------------------------------------------------------\n";
	cout<<"\t     PROGRAMA PARA CALCULAR LA NOTA FINAL DE UN ESTUDIANTE\n";
	cout<<"-------------------------------------------------------------------------------\n\n";
 
 
	// declarando las variables a usar
	char nombre[100];
	char titulo[100]="\t \t \t REGISTRO DE NOTAS 2015\n";
	int canEst;
	int i,j;
	char nomEst[30];
	int sumaBim=0;
 
	int notaEst;
	char salto[10]="\n";
	char prof[100]="Profesor(a): ";
	int op;
 
	cout<<"Nombre del profesor(a): ";
	cin>>nombre;
 
	cout<<"Cantidad de estudiantes: ";
	cin>>canEst;
 
	cout<<"-------------------------------------------------------------------------------\n\n";
 
 
	FILE *archivo = fopen("Notas.txt", "w+");
	fprintf(archivo, titulo);
 
	fprintf(archivo, prof);
	fprintf(archivo, nombre);
	fprintf(archivo, salto, salto);
 
	for(i=1 ; i<=canEst ; i++){
 
		int nfEst=0;
 
		cout<<i<<": Nombre del estudiante a calcular: ";
		cin>>nomEst;
 
		cout<<"Acontinuacion ingrese las notas bimestrales del estudiante "<<nomEst<<"...\n\n";
		for(j=1; j<=4; j++){
			cout<<"Bimestre "<<j<<": ";
			cin>>notaEst;
 
			sumaBim=(sumaBim+notaEst);
 
			fprintf(archivo, notaEst);
		}
 
		nfEst=sumaBim/4;
		cout<<"La Nota final de "<<nomEst<<" es de: "<<nfEst<<"\n";
		cout<<"-------------------------------------------------------------------------------\n\n";
 
		fprintf(archivo, nomEst);
		fprintf(archivo, salto);
 
	}
 
	fclose(archivo);
 
	return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

leer escribir datos en archivos txt en c++

Publicado por aguml (522 intervenciones) el 03/11/2015 08:28:10
A ver, fprintf tiene el siguiente formato:
fprintf (char *buffer,char *máscara, parametros);
Buffer es el lugar donde se guarda la cadena resultante.
Máscara es una cadena que indica el formato de los parámetros.
Los parámetros van separados por comas y son los valores que queramos incorporar a la cadena.
Un ejemplo:
1
2
3
4
5
6
int numero=10;
char calle []="Betis";
int planta=2;
char dir [50];
sprintf (dir, "Vives en la calle %s, número %i, planta %i\n",calle, numero, planta);
cout <<dir;
En tu caso no estas poniendo la máscara de entrada y cuando quieres pasar una cadena se lo traga porque es lo que espera pero cuando es otro tipo como por ejemplo int te dice que le estas pasando como máscara un int y espera un char*. Haz esos cambios y me cuentas.
De todos modos, si estas usando c++ lo más fácil seria usar ofstream para salida y ifstream para entrada y si quieres que haga ambas cosas fstream ya que es mucho más sencillo y no necesitas sprintf en tu caso. Por ejemplo:
1
2
3
4
5
6
ofstream salida;
int valor=5;
char cadena="Hola";
salida.open ("prueba.txt");
salida <<valor <<cadena;
salida.close ();
El solito se encarga de la conversión al hacer la sobrecarga sin necesidad de usar sprintf. Fácil ¿no?
Por cierto, esta línea que tienes:
sumaBim=(sumaBim+notaEst);
Se puede poner así y queda mejor:
sumaBim+=notaEst;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

leer escribir datos en archivos txt en c++

Publicado por aguml (522 intervenciones) el 03/11/2015 08:47:04
Para leer en mi ejemplo anterior el archivo;
1
2
3
4
5
6
ifstream entrada;
int valor;
char cadena[50];
entrada.open ("prueba.txt");
entrada>>valor >>cadena;
entrada.close ();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

leer escribir datos en archivos txt en c++

Publicado por agustin (522 intervenciones) el 03/11/2015 10:05:19
He mirado tu codigo y lo he corregido:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
   // titulo del programa
   cout<<"\n-------------------------------------------------------------------------------\n";
   cout<<"\t PROGRAMA PARA CALCULAR LA NOTA FINAL DE UN ESTUDIANTE\n";
   cout<<"-------------------------------------------------------------------------------\n\n";
 
   // declarando las variables a usar
   char nombre[100];
   char titulo[100]="\t \t \t REGISTRO DE NOTAS 2015\n";
   int canEst;
   int i,j;
   char nomEst[30];
   float notaEst;
   char prof[100]="Profesor(a): ";
   int op;
   cout<<"Nombre del profesor(a): ";
   cin>>nombre;
   cout<<"Cantidad de estudiantes: ";
   cin>>canEst;
   cout<<"-------------------------------------------------------------------------------\n\n";
 
   FILE *archivo = fopen("Notas.txt", "w+");
   fprintf(archivo,"%s", titulo);
   fprintf(archivo,"%s", prof);
   fprintf(archivo,"%s\n\n", nombre);
   for(i=1 ; i<=canEst ; i++){
      float nfEst=0;
      cout<<i<<": Nombre del estudiante a calcular: ";
      cin>>nomEst;
      cout<<"A continuacion ingrese las notas bimestrales del estudiante "<<nomEst<<"...\n\n";
      fprintf(archivo,"%s:\n", nomEst);
      for(j=1; j<=4; j++){
         cout<<"Bimestre "<<j<<": ";
         cin>>notaEst;
         nfEst += notaEst;
         fprintf(archivo,"Bimestre %i: %.2lf\n",j,notaEst);
      }
      nfEst /= 4;
      cout<<"La Nota final de "<<nomEst<<" es de: "<<nfEst<<"\n";
      cout<<"-------------------------------------------------------------------------------\n\n";
      fprintf(archivo,"La Nota final de %s es de: %.2lf\n\n",nomEst,nfEst);
   }
   fclose(archivo);
   return 0;
}

Y usando C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
   // titulo del programa
   cout<<"\n-------------------------------------------------------------------------------\n";
   cout<<"\t PROGRAMA PARA CALCULAR LA NOTA FINAL DE UN ESTUDIANTE\n";
   cout<<"-------------------------------------------------------------------------------\n\n";
 
   // declarando las variables a usar
   char nombre[100];
   char titulo[100]="\t \t \t REGISTRO DE NOTAS 2015\n";
   int canEst;
   int i,j;
   char nomEst[30];
   float notaEst;
   char prof[100]="Profesor(a): ";
   int op;
   cout<<"Nombre del profesor(a): ";
   cin>>nombre;
   cout<<"Cantidad de estudiantes: ";
   cin>>canEst;
   cout<<"-------------------------------------------------------------------------------\n\n";
 
   ofstream archivo;
   archivo.open("Notas.txt");
   archivo << titulo << prof << nombre << endl << endl;
 
   for(i=1 ; i<=canEst ; i++){
      float nfEst=0;
      cout << i << ": Nombre del estudiante a calcular: ";
      cin >> nomEst;
      cout << "A continuacion ingrese las notas bimestrales del estudiante " << nomEst << "...\n\n";
      archivo << nomEst << endl;
      for(j=1; j<=4; j++){
         cout << "Bimestre " << j << ": ";
         cin >> notaEst;
         nfEst += notaEst;
         archivo<<"Bimestre " << j << ": " << notaEst << endl;
      }
      nfEst /= 4;
      cout<<"La Nota final de "<<nomEst<<" es de: "<<nfEst<<"\n";
      cout<<"-------------------------------------------------------------------------------\n\n";
      archivo << "La Nota final de " << nomEst << " es de: " << nfEst << endl << endl;
   }
   archivo.close();
   return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar