Autor
|
Tema: serie de numeros en fichero (Leído 2,955 veces)
|
m@o_614
Desconectado
Mensajes: 389
|
Saludos tengo el siguiente codigo que mediante un for me tiene que imprimir 1000 numeros inversamente ordenados en un archivo con el mismo nombre, el problema es que me imprime basura en el archivo y no tengo idea de por que?? #include <stdio.h> #include <stdlib.h> int main() { int i; FILE *fd; if((fd = fopen("F:\\1000-Inversamente Ordenados.txt","w"))!=NULL ) { for(i=1000;i > 0;i--) { fwrite("\n",sizeof(int),1,fd ); } } else printf("No se pudo crear el archivo"); return 0; }
de antemano gracias
|
|
|
En línea
|
|
|
|
xiruko
Desconectado
Mensajes: 438
|
No sé si de esta manera funcionará, supongo que sí: fwrite("\n", sizeof(char), 1, fd );
Y sino, una manera que seguro que funciona para escribir cadenas constantes en un archivo:
Saludos
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
Te imprime basura porque fwrite espera una cadena de caracteres... y tu le estas pasando un int.
Hablando en binario.
el número 1000 en texto se representa de la siguiente forma: 0x31 0x30 0x30 0x30
es decir, 4 caracteres que representan 1 uno seguido de 3 ceros.
el número 1000 en notación binaria se codifica tal que 0x00 0x00 0x03 0xE8 ... se parecen como un huevo a una castaña
Lo que te sucede, por si no ha quedado claro, es que tú le estás pasando 0x00 0x00 0x03 0xE8 y es eso jústamente lo que está escribiendo en el archivo... obviamente 0x00 y 0x03 no son caracteres legibles... y 0xE8 es cualquier cosa menos un número, de ahi que tú solo seas capaz de ver basura.
Tu estás esperando que fwrite sea capaz, por ciencia infusa, de saber que tú le estás pasando un int y que además quieres que lo convierta a char... mala suerte, fwrite no es tan listo.
Si quieres que ese número sea legible tendrás que convertirlo antes a cadena de caracteres. deberias mirarte la función itoa, por ejemplo.
Un saludo.
|
|
|
En línea
|
|
|
|
xiruko
Desconectado
Mensajes: 438
|
También puedes usar sprintf para preparar la cadena a escribir y luego pasarla al archivo: char cadena[MAX]; for (i=1000; i>0; i--) { }
Saludos
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
tengo el siguiente codigo que mediante un for me tiene que imprimir 1000 numeros inversamente ordenados en un archivo con el mismo nombre, el problema es que me imprime basura en el archivo y no tengo idea de por que?? Como ya te comento eferion el texto en el archivo, si lo abres con un editor de texto, es ilegible porque la función fwrite imprime sin formato: se envía al archivo la secuencia de bytes tal cual están en memoria. Cuando utilizas fwrite para escribir en el archivo debes utilizar fread para leer de nuevo los valores: #include <stdio.h> #include <stdlib.h> #define NOM_ARCHIVO "Entrada.txt" #define MAX 5 int main(void) { FILE *stream; int i; if ((stream = fopen(NOM_ARCHIVO , "wb")) != NULL ){ for (i = MAX; i > 0; i--) fwrite(&i , sizeof(int), 1, stream ); if ((stream = fopen(NOM_ARCHIVO , "rb")) != NULL ){ while (fread(&i , sizeof(int), 1, stream ) == 1) }else { return EXIT_FAILURE; } }else { return EXIT_FAILURE; } return EXIT_SUCCESS; }
O bien puedes utilizar fprintf para enviar al archivo los valores como texto con formato, en ese caso la lectura la realizas con fgets, fscanf, etc., dependiendo de los datos enviados. Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
obtener la media de una serie de números
Programación C/C++
|
minette1988
|
4
|
4,171
|
23 Junio 2010, 03:17 am
por nicolas_cof
|
|
|
Ayuda en extraer numeros (coordenadas x,y) de un fichero .txt en C
Programación C/C++
|
RicGeo
|
2
|
4,975
|
13 Agosto 2014, 22:59 pm
por RicGeo
|
|
|
DESPLEGAR SERIE DE NUMEROS
Programación C/C++
|
codelau21
|
2
|
1,886
|
3 Noviembre 2015, 04:06 am
por Zodiak98
|
|
|
Serie de numeros en C
Programación C/C++
|
acer-x
|
2
|
1,649
|
16 Mayo 2018, 15:42 pm
por acer-x
|
|
|
Ayuda sobre factor comunde una serie de numeros
Hacking
|
jabrajam
|
0
|
2,610
|
7 Abril 2020, 16:20 pm
por jabrajam
|
|