Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
ayuda con programacion en C
Autor Mensaje
sebainge Sin conexión
Empleado de Fotocopiadora
Sin Estado
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 27
Agradecimientos dados: 2
Agradecimientos: 0 en 0 posts
Registro en: Feb 2013
Mensaje: #1
ayuda con programacion en C Dudas y recomendaciones Algoritmos y Estructuras de Datos
buenas, mi problema es el siguiente: estoy haciendo un ejercicio sencillo de programacion en C, pidiendo valores enteros y guardandolos en un archivo .txt. hasta ahi todo bien, pero cuando voy a abrir el .txt creado no salen los numeros que ingrese sino una direccion seguramente de memoria o algo asi , creo que es un problema de la codificacion. si alguien me puede dar una mano le agradeceria mucho.

saludos
23-08-2014 18:05
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Santi Aguito Sin conexión
Presidente del CEIT
Newtoniano
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 1.238
Agradecimientos dados: 229
Agradecimientos: 613 en 335 posts
Registro en: Oct 2012
Mensaje: #2
RE: ayuda con programacion en C
Subí el código así te podemos ayudar =)

Busca la excelencia, el éxito llegará
23-08-2014 18:06
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rob. Sin conexión
Presidente del CEIT
Smile!
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.149
Agradecimientos dados: 126
Agradecimientos: 85 en 66 posts
Registro en: Dec 2010
Mensaje: #3
RE: ayuda con programacion en C
Pensá que el código en principio lee el archivo, y las variables que encuentra se supone que lo guarda en el stack/pila de la memoria, por lo que puede ser que cuando imprimas por pantalla te encuentres con la dirección en memoria, en lugar del valor en sí.

Deberías jugar en con el tema de las referencias, por ahí es la falta de un asterisco antes de la variable.

wake me up when september ends!
(Este mensaje fue modificado por última vez en: 23-08-2014 18:11 por rob..)
23-08-2014 18:10
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
sebainge Sin conexión
Empleado de Fotocopiadora
Sin Estado
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 27
Agradecimientos dados: 2
Agradecimientos: 0 en 0 posts
Registro en: Feb 2013
Mensaje: #4
RE: ayuda con programacion en C
ahi va el codigo

#include <stdio.h>

int main()

{
FILE *arch;
int v;

arch = fopen ("prueba.txt","w");

printf("ingrese un valor: ");
scanf("%d",&v);

while (v!=0)

{
fwrite(&v,sizeof(int),1,arch);
printf("ingrese un valor: ");
scanf("%d",&v);
}

fclose(arch);
return 0;
}
23-08-2014 18:14
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
leibniz Sin conexión
Secretario General
El alma es el espejo de un uni...
*******

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 847
Agradecimientos dados: 44
Agradecimientos: 23 en 17 posts
Registro en: Dec 2012
Mensaje: #5
RE: ayuda con programacion en C
El tema es que lo estas escribiendo en binario... Vos esperas ver en el archivo la representación ascii de los valores, pero estas escribiendo la representación en memoria de los valores!

Creo que tenes que usar la función itoa (integer to ascii).

[Imagen: 128px-Leibnitz_signature.svg.png]
23-08-2014 18:19
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
nutters Sin conexión
Profesor del Modulo A
Winter is comming!
*****

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 332
Agradecimientos dados: 61
Agradecimientos: 380 en 18 posts
Registro en: Sep 2012
Mensaje: #6
RE: ayuda con programacion en C
esta mal esto: fwrite(&v,sizeof(int),1,arch);

tiene que ser: fwrite(v,"%d /n",1,arch);//o lago asi era, no tnego mas linuz como para haer man de esta funcion, cualquier cosa fijate en mis post que tenes muchos ejemplos de mis ejercicios, tenes subido de estos tipos.

[Imagen: 940c7f292a23ac2bfeb007a11ed0c.png]
23-08-2014 18:20
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rob. Sin conexión
Presidente del CEIT
Smile!
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.149
Agradecimientos dados: 126
Agradecimientos: 85 en 66 posts
Registro en: Dec 2010
Mensaje: #7
RE: ayuda con programacion en C

Off-topic:
Probá declararlo como puntero al comienzo...
int *v;

Para luego usarlo sin la desreferencia:
scanf("Numero: %d", v);



Por ahí es una pelotudez lo que digo y no cambia nada, pero a lo mejor resulta...

wake me up when september ends!
(Este mensaje fue modificado por última vez en: 23-08-2014 18:24 por rob..)
23-08-2014 18:23
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Amadeo Sin conexión
Profesor del Modulo A
Sin estado :(
*****

Otra
UBA - Ciencias Exactas y Naturales

Mensajes: 336
Agradecimientos dados: 3
Agradecimientos: 8 en 8 posts
Registro en: Dec 2009
Mensaje: #8
RE: ayuda con programacion en C
Proba con fprintf en vez de fwrite.

.
23-08-2014 18:32
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
sebainge Sin conexión
Empleado de Fotocopiadora
Sin Estado
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 27
Agradecimientos dados: 2
Agradecimientos: 0 en 0 posts
Registro en: Feb 2013
Mensaje: #9
RE: ayuda con programacion en C
ahi hice el codigo para leer lo que hay en el archivo y va bien, me retorna los numeros que ingreso y si actualizo sigue leyendo bien. creo que si quiero abrir el .txt desde bloc de notas o similares y que aparezcan los numeros y no las direcciones ya es meterse en un tema que no se mi me conviene , x ahi me la estoy complicando al pedo.

lo estoy haciendo mas que nada para cuando tenga que hacer ejercicios de archivos, cuando te dicen que dan un archivo con por ej listado de alumnos (alumnos.dat) y quiera trabajar con eso
(Este mensaje fue modificado por última vez en: 23-08-2014 18:41 por sebainge.)
23-08-2014 18:37
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Santi Aguito Sin conexión
Presidente del CEIT
Newtoniano
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 1.238
Agradecimientos dados: 229
Agradecimientos: 613 en 335 posts
Registro en: Oct 2012
Mensaje: #10
RE: ayuda con programacion en C
Si queres hacer eso en un .txt, usa fprintf
Fijate que vas a ver los numeros sin problemas. Meti un salto de linea para que quede mas prolijo.
Otra cosa, trata de siempre poner la verificación de que fopen no te devuelva NULL. Muchas veces el programa se ejecuta bien y despues resulta que anduvo todo para el orti. Te vas a ahorrar bastantes problemas ;)

El programa te va a quedar asi:


#include <stdio.h>

int main()

{
FILE *arch;
int v;

arch = fopen ("prueba.txt","w");

if (arch==NULL)
{
printf("\n\nError al abrir el archivo");
}

else
{
printf("ingrese un valor: ");
scanf("%d",&v);

while (v!=0)
{
fprintf(arch,"%d\n",v);
printf("ingrese un valor: ");
scanf("%d",&v);

}
fclose(arch);
}

return 0;
}


Busca la excelencia, el éxito llegará
(Este mensaje fue modificado por última vez en: 23-08-2014 18:53 por Santi Aguito.)
23-08-2014 18:50
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
leibniz Sin conexión
Secretario General
El alma es el espejo de un uni...
*******

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 847
Agradecimientos dados: 44
Agradecimientos: 23 en 17 posts
Registro en: Dec 2012
Mensaje: #11
RE: ayuda con programacion en C
(23-08-2014 18:32)Amadeo escribió:  Proba con fprintf en vez de fwrite.

Es cierto, esta es la posta.

(23-08-2014 18:37)sebainge escribió:  ahi hice el codigo para leer lo que hay en el archivo y va bien, me retorna los numeros que ingreso y si actualizo sigue leyendo bien. creo que si quiero abrir el .txt desde bloc de notas o similares y que aparezcan los numeros y no las direcciones ya es meterse en un tema que no se mi me conviene , x ahi me la estoy complicando al pedo.

Ojo, no estas viendo direcciones. Tu programa escribe la representación en memoria del valor en el archivo, tal cual. Después el notepad lo interpreta como caracter, y ahí se va todo a la mierda.

(23-08-2014 18:37)sebainge escribió:  lo estoy haciendo mas que nada para cuando tenga que hacer ejercicios de archivos, cuando te dicen que dan un archivo con por ej listado de alumnos (alumnos.dat) y quiera trabajar con eso

Practicá las dos cosas, leer y escribir en ascii, y leer y escribir en binario.

[Imagen: 128px-Leibnitz_signature.svg.png]
(Este mensaje fue modificado por última vez en: 23-08-2014 18:58 por leibniz.)
23-08-2014 18:54
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Santi Aguito Sin conexión
Presidente del CEIT
Newtoniano
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 1.238
Agradecimientos dados: 229
Agradecimientos: 613 en 335 posts
Registro en: Oct 2012
Mensaje: #12
RE: ayuda con programacion en C
Cuando quieras laburar con binarios, usas archivos .dat, y las funciones fwrite y fread. La sintaxis de fwrite tal como vos la usaste esta bien. En tu caso, para fread seria:


fread (&buffer,sizeof(int),1,arch);
printf("%d, buffer);

Donde en buffer vas guardando numero a numero que vas levantando e imprimiendolo en pantalla.

Si quisieras ver el archivo.dat, tenes que usar algun programita especial. Yo no recuerdo bien que editor usaba para esto en informática, si queres me fijo y te aviso

Busca la excelencia, el éxito llegará
(Este mensaje fue modificado por última vez en: 23-08-2014 19:02 por Santi Aguito.)
23-08-2014 18:58
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
sebainge Sin conexión
Empleado de Fotocopiadora
Sin Estado
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 27
Agradecimientos dados: 2
Agradecimientos: 0 en 0 posts
Registro en: Feb 2013
Mensaje: #13
RE: ayuda con programacion en C
(23-08-2014 18:50)Santi Aguito escribió:  Si queres hacer eso en un .txt, usa fprintf
Fijate que vas a ver los numeros sin problemas. Meti un salto de linea para que quede mas prolijo.
Otra cosa, trata de siempre poner la verificación de que fopen no te devuelva NULL. Muchas veces el programa se ejecuta bien y despues resulta que anduvo todo para el orti. Te vas a ahorrar bastantes problemas ;)

El programa te va a quedar asi:


#include <stdio.h>

int main()

{
FILE *arch;
int v;

arch = fopen ("prueba.txt","w");

if (arch==NULL)
{
printf("\n\nError al abrir el archivo");
}

else
{
printf("ingrese un valor: ");
scanf("%d",&v);

while (v!=0)
{
fprintf(arch,"%d\n",v);
printf("ingrese un valor: ");
scanf("%d",&v);

}
fclose(arch);
}

return 0;
}




genial santi! funco barbaro.

gracias a todos x su tiempo muchachos. suerte!
23-08-2014 18:59
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Santi Aguito Sin conexión
Presidente del CEIT
Newtoniano
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 1.238
Agradecimientos dados: 229
Agradecimientos: 613 en 335 posts
Registro en: Oct 2012
Mensaje: #14
RE: ayuda con programacion en C
No es nada =) cualquier duda que tengas consulta.

Saludos

Busca la excelencia, el éxito llegará
23-08-2014 19:08
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.