funcion fprintf

Iniciado por flony, 19 Enero 2013, 01:26 AM

0 Miembros y 1 Visitante están viendo este tema.

flony

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
#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
#ifdef _M_IX86
    PFLS_GETVALUE_FUNCTION flsGetValue = FLS_GETVALUE;
    if (!flsGetValue)
    {
        flsGetValue = DecodePointer(gpFlsGetValue);
        TlsSetValue(__getvalueindex, flsGetValue);
    }
    return flsGetValue;
si un problema no tiene solucion entonces no es un problema...es algo inevitable

rir3760

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:
#include <stdio.h>
#include <stdlib.h>

#define NOM_ARCHIVO  "Entrada.txt"

int main(void)
{
   FILE *archivo;
   long num = 52546;
   
   if ((archivo = fopen(NOM_ARCHIVO, "wb+")) == NULL){
      perror(NOM_ARCHIVO);
      return EXIT_FAILURE;
   }
   
   fprintf(archivo, "%06ld\n", num);
   rewind(archivo);
   fscanf(archivo, "%ld", &num);
   fclose(archivo);
   printf("I have read:%06d\n", num);
   
   return EXIT_SUCCESS;
}


Un saludo
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

flony

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
si un problema no tiene solucion entonces no es un problema...es algo inevitable