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