[Multi] Error en ficheros

Hola gente,estoy haciendo una aplicacion que en un momento de la ejecucion,tiene que leer un numero de un fichero llamado config.txt.
Aqui llega el problema,como lo hago? He probado con un fgetc,pero va ser que no,y creo que no hay ninguna funcion que lo haga;sabeis de alguna?

Saludos y hasta la proxima!
lenguaje....
plataforma....
explica mejor que quieres hacer con el fichero... meterlo en una estructura de datos entero?
procesarlo?
acceder de manera binaria o en forma de texto? (creo que texto)

en c++ es tan fácil como leer linea a linea con << en un string
en c pues con getc si que se podría pero no es nada eficiente leer de caracter en caracter, creo que puedes gastar fgets( get string) y decirle el delimitador si le das uno distinto del \n ya lo tienes te leerá todo el fichero. pero seguramente quieras hacer un parser... si es eso te recomendaría una gramática sencilla + lexico y algunas acciones semánticas que construllan el árbol y listo
no,lo que quiera es leer un NUMERO y no una string.Estoy haciendo una aplicacion en C y lo que quiero es saber en numero( 1 o 2 o 3,etc.) para la configuracion.
Saludos y muchas gracias por tu colaboracion
Si sabes como va scanf, existe fscanf , le pasas como primer parametro el FILE * y los demas como si fuera el scanf,
no,quiero leerlo del archivo,no ponerlo en el
Saludos y muchas gracias de todas formas
si quieres meter el número en modo ascii es una cosa:
en este caso lee toda la linea con la funcion getline() y luego usa atoi para hacer el casting a entero

si lo quieres pillar de un binario:
simplemente lo lees en modo binario contando el tamaño que tenga el dato offset y demás
todoloquese escribió:no,quiero leerlo del archivo,no ponerlo en el
Saludos y muchas gracias de todas formas


¿Y para que crees que sirve el fscanf?

printf -> escribe en la salida estándar
scanf -> lee de la entrada estándar

||
V

fprintf -> escribe en el fichero
fscanf -> lee del fichero

Si quieres te hago el codigo y todo....

Venga va

FILE * f = fopen("config.txt","r");
if( f == NULL ) // no se puede abrir
   exit(1);   // o lo que tu quieras

int num;

fscanf(f,"%i",&num); // wow, no era tan dificil



Esto es de memoria, pero me parece que esta todo bien.

PD: Lo de gracias de todas formas se dice cuando el que te intenta ayudar no lo consigue, podrías intentar ver si lo que te aconsejan vale o no.

PD: saulotmalo, creo que estas sobredimensionandole el problema al chaval no? XD. Si te hiciera caso(por ejemplo la gramatica) dejaría la programación rápido.
parrincrisis escribió:
¿Y para que crees que sirve el fscanf?

printf -> escribe en la salida estándar
scanf -> lee de la entrada estándar

||
V

fprintf -> escribe en el fichero
fscanf -> lee del fichero

Si quieres te hago el codigo y todo....

Venga va

FILE * f = fopen("config.txt","r");
if( f == NULL ) // no se puede abrir
   exit(1);   // o lo que tu quieras

int num;

fscanf(f,"%i",&num); // wow, no era tan dificil



Esto es de memoria, pero me parece que esta todo bien.

PD: Lo de gracias de todas formas se dice cuando el que te intenta ayudar no lo consigue, podrías intentar ver si lo que te aconsejan vale o no.

PD: saulotmalo, creo que estas sobredimensionandole el problema al chaval no? XD. Si te hiciera caso(por ejemplo la gramatica) dejaría la programación rápido.


lo que pasa es que pensaba que quería hacer un fichero de configuraciones!!! para eso si que es muy útil una pequeña gramática con acciones asociadas y listo... pero para esto bien :)


scanf anda que no hace tiempo que no toco eso... mi método del getline creo que es más lento.
muchas gracias los dos;(lo del fscanf pensava que servia para introducir un valor por el teclado y ponerlo en el documento!,fallo mio)
saulotmalo ,muchas gracias por tu ayuda,pero desde el segundo mensaje me ha costado un poquito seguirte!(vamos,que eso de la gramatica,ni zorra idea)

Bueno muchas gracias y adios!
Ficheros de configuración == XML + TinyXML
Toda la potencia y flexibilidad que necesites. Quizá mucha más de la que necesitas.

Más simple: te creas tu propio parser de ficheros ini:
[etiqueta]
clave=valor

O bien como tú haces: metes los valores separados por espacios o saltos de línea y a morir (lo que no te recomiendo para cualquier cosa medianamente complicada o con muchos datos por el lío que supone)

Vamos, algo super simple. Todo lo demás es matar moscas a cañonazos.

Y para la próxima: http://www.conclase.net/c/
9 respuestas