Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: flony en 19 Enero 2013, 01:26 am



Título: funcion fprintf
Publicado por: flony en 19 Enero 2013, 01:26 am
tengo el siguiente code y quiero hacer una archivo .dat y quiero que tenga un vector de 6 digitos enteros compila y todo pero cuando lo ejecuto salta algo
Código:
#include <stdio.h>

int main ()
{
int numero[6]={};
  FILE * pFile;

  pFile = fopen ("flony.dat","wb+");
  fprintf (pFile, "%s", 052546 );
  rewind (pFile);
  fscanf (pFile, "%s", &numero);
  fclose (pFile);
  printf ("I have read: %s : \n",numero );
  return 0;
}
cuando lo ejecuto me manda a tidtable.h mas exactamentte a esta parte
Código:
#ifdef _M_IX86
    PFLS_GETVALUE_FUNCTION flsGetValue = FLS_GETVALUE;
    if (!flsGetValue)
    {
        flsGetValue = DecodePointer(gpFlsGetValue);
        TlsSetValue(__getvalueindex, flsGetValue);
    }
    return flsGetValue;


Título: Re: funcion fprintf
Publicado por: rir3760 en 19 Enero 2013, 02:29 am
Si no tienes un curso o libro de calidad es hora de conseguir uno, ello porque (lo digo en buen plan) hay errores en casi todas las lineas.

* Cuando declaras un array e indicas sus valores iniciales mediante una lista esta debe contener por lo menos uno, no es valido utilizar (como es tu caso) una lista vacía.

* Con las funciones printf/fprintf/sprintf el especificador de formato "%s" indica que el argumento correspondiente (en tu caso 052546) es la dirección donde se almacena la cadena. Aquí hay dos errores: el primero que difícilmente la dirección sera valida y el segundo que 052546 != 52546 (el primero se toma como base ocho).

* Al leer del archivo con fscanf y "%s" se debe indicar el nombre de un array de caracteres sin utilizar el operador "&".

El programa con las correcciones:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define NOM_ARCHIVO  "Entrada.txt"
  5.  
  6. int main(void)
  7. {
  8.   FILE *archivo;
  9.   long num = 52546;
  10.  
  11.   if ((archivo = fopen(NOM_ARCHIVO, "wb+")) == NULL){
  12.      perror(NOM_ARCHIVO);
  13.      return EXIT_FAILURE;
  14.   }
  15.  
  16.   fprintf(archivo, "%06ld\n", num);
  17.   rewind(archivo);
  18.   fscanf(archivo, "%ld", &num);
  19.   fclose(archivo);
  20.   printf("I have read:%06d\n", num);
  21.  
  22.   return EXIT_SUCCESS;
  23. }

Un saludo


Título: Re: funcion fprintf
Publicado por: flony en 19 Enero 2013, 02:57 am
gracias  ;-) ;-) ;-).
lo del libro, estoy en eso, esto era para practicar  ;)
y bueno...no quería molestar, para la próxima o no pregunto, o buscare la respuesta en otro lado.
pero todo bien....se que lo decís sin mala onda