elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  (Consulta) Pasando a las funciones fscanf argumentos nulos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Consulta) Pasando a las funciones fscanf argumentos nulos  (Leído 2,976 veces)
class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
(Consulta) Pasando a las funciones fscanf argumentos nulos
« en: 29 Julio 2016, 16:55 pm »

Hola, me preguntaba si se puede pasar argumentos nulos a las funciones fscanf para que se ignore tal argumento.

Código de ejemplo donde se ilustra como ignorar una línea. Solo funcionaría si se pueden pasar argumentos nulos:

Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.        fscanf(stdin, "%s[^'\n']", NULL);
  5.        fprintf(stdout, "Linea ignorada");
  6.  
  7.        return 0;
  8. }

Esto lo he probado bajo Linux (Debian) y me ha funconado sin que se produzcan errores. Eso si, el compilador me ha advertido. Lo que no sé si es estándar o me ha funcionado de casualidad.

P.D.: En el caso que esto no funcione como debiera, ¿hay alguna forma de que fscanf ignore lo que yo quiera?

Muchas gracias


« Última modificación: 29 Julio 2016, 17:00 pm por class_OpenGL » En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: (Consulta) Pasando a las funciones fscanf argumentos nulos
« Respuesta #1 en: 29 Julio 2016, 17:34 pm »

¡Buenas!

Me has dejado con la mosca detrás de la oreja, así que lo he probado y lo habré ejecutado unas 10-15 veces en Debian Stretch sin ningún problema. Por lo que comentan en stackoverflow el estándar exige que si se lee una cadena entonces hay que proporcionar un argumento con la capacidad de leer hasta el primer espacio y almacenar el caracter nulo. Pero gcc debe de tener una implementación no estándar de scanf, así que los puntero a NULL (al menos en el caso de cadenas) se ignoran.

A ver si encuentro algo más de información.

¡Saludos!


En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: (Consulta) Pasando a las funciones fscanf argumentos nulos
« Respuesta #2 en: 29 Julio 2016, 20:19 pm »

Yo también ando buscando, pero solamente encontré lo que dices tu. Lo más seguro es que sea eso entonces. Algo en lo que me he fijado es que no se extraen datos cuando pasas un puntero NULL. Esto lo digo porque, por ejemplo, la línea que ejecuto se supone que ignoraría una línea, pero no es así. Lo sé porque al intentar ignorar una línea con esa función y parámetros determinados, no se ignora, simplemente es como si la función no se hubiera ejecutado o llamado. Sabiendo eso, lo más probable es que como tu dices, sea una implementación no estándar. Ahora mismo no puedo, pero en un rato lo probaré bajo Windows para ver si funciona con el compilador VC++
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: (Consulta) Pasando a las funciones fscanf argumentos nulos
« Respuesta #3 en: 29 Julio 2016, 21:40 pm »

P.D.: En el caso que esto no funcione como debiera, ¿hay alguna forma de que fscanf ignore lo que yo quiera?
Si pones un asterisco en la cadena de formato en los especificadores, los ignorará.
Código
  1. fscanf(stdin, "%*s[^'\n']");
En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: (Consulta) Pasando a las funciones fscanf argumentos nulos
« Respuesta #4 en: 29 Julio 2016, 22:01 pm »

Vaya, eso es información muy interesante. ¡Gracias!... Otra pequeña pregunta, si por ejemplo, quiero que solo ignore 64 caracteres, ¿la estrctura sería...

Código
  1. fscanf(file, "%64*s");

... o sería con el asterisco primero y luego el 64 (el 64 es un ejemplo)?
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: (Consulta) Pasando a las funciones fscanf argumentos nulos
« Respuesta #5 en: 29 Julio 2016, 22:48 pm »

Porcentaje, asterisco, longitud de cadena, tamaño de variable, tipo de variable.
Pero bueno, todo eso lo tienes mejor explicado en http://en.cppreference.com/w/cpp/io/c/fscanf
En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: (Consulta) Pasando a las funciones fscanf argumentos nulos
« Respuesta #6 en: 30 Julio 2016, 01:51 am »

Ah gracias por la página!
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Funciones con número arbitrario de argumentos [PHP]
PHP
madpitbull_99 3 5,080 Último mensaje 6 Marzo 2011, 22:31 pm
por JungleBoogie
ver argumentos de funciones codeblocks
Programación C/C++
_niu 2 2,919 Último mensaje 15 Diciembre 2011, 21:57 pm
por _niu
Consulta fscanf leer nueva linea
Programación C/C++
casidus 7 4,597 Último mensaje 15 Febrero 2014, 12:16 pm
por casidus
[C] Argumentos anónimos en llamadas a funciones
Programación C/C++
MAFUS 4 2,292 Último mensaje 23 Diciembre 2015, 17:26 pm
por 0xFer
Funciones con argumentos OR: ¿Como?
Programación C/C++
Desiresportal 1 1,613 Último mensaje 1 Junio 2016, 14:34 pm
por class_OpenGL
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines