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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿ Como utilizar %n ?
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ¿ Como utilizar %n ?  (Leído 5,912 veces)
sinatra

Desconectado Desconectado

Mensajes: 4



Ver Perfil
¿ Como utilizar %n ?
« en: 29 Septiembre 2012, 19:30 pm »

Hola, me pueden ayudar a utilizar el especificador de formato %n, he buscado en google, pero solo dicen como utilizar otros especificadores de formato, y no %n

De antemano gracias

Saludos.


En línea

Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: ¿ Como utilizar %n ?
« Respuesta #1 en: 29 Septiembre 2012, 19:52 pm »

No lee nada. Mira este link:

http://beej.us/guide/bgc/output/html/multipage/scanf.html

Saludos.

EDITO: Te dejo aqui un ejemplo para que veas como funciona:

Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  
  5. int x;
  6. char linea[] = "hola";
  7.  
  8. scanf("%n", &x);
  9. printf("%s\n", linea);
  10.        getchar();
  11.  
  12. return 0;
  13. }

En este codigo se tendria que pedir primero que se ingrasase un entero, pero como el espefificador es "%n" se salta el scanf, y pasa directamente a escribir "hola".

Saludos


« Última modificación: 29 Septiembre 2012, 20:05 pm por Caster » En línea

sinatra

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Re: ¿ Como utilizar %n ?
« Respuesta #2 en: 29 Septiembre 2012, 20:24 pm »

Pero está relacionado con la salida por printf().
En la pagina anterior del lick que me enviaste dice como utilizarlo, ademas pone un ejemplo, pero me parece que el ejemplo no esta bien.

El ejemplo es el siguinte:

Código
  1. int numChars;
  2. float a = 3.14159;
  3. int b = 3490;
  4.  
  5. printf("%f %d%n\n", a, b, &numChars);
  6. printf("The above line contains %d characters.\n", numChars);

Si puedes arreglarlo...gracias.

Ademas tengo una definicion de un libro que habla de la salida por printf() y dice:

%n   :    El argumento asosiado es un putero a entero al que se asigna el numero de
             caracteres escritos hasta que aparece %n

Saludos.
En línea

Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: ¿ Como utilizar %n ?
« Respuesta #3 en: 29 Septiembre 2012, 21:39 pm »

Pues es simple, muestra el numero de caracteres escritos hasta donde esté "%n". Aunque yo estoy probando este codigo:

Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  
  5. int numChars;
  6.        int a = 1;
  7.        int b = 12;
  8.  
  9.        printf("%d %d\n %n", a, b, &numChars);
  10.        printf("The above line contains %d characters.\n", numChars);
  11.  
  12. return 0;
  13. }

Y no me da bien el resultado, no se por qué.

Saludos
« Última modificación: 29 Septiembre 2012, 21:53 pm por Caster » En línea

sinatra

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Re: ¿ Como utilizar %n ?
« Respuesta #4 en: 29 Septiembre 2012, 22:12 pm »


Y no me da bien el resultado, no se por qué.

Bueno, gracias por responder, asi se que no soy el unico al que le pasan estas cosas.
En línea

Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: ¿ Como utilizar %n ?
« Respuesta #5 en: 29 Septiembre 2012, 22:15 pm »

He probado a cambiar el tipo de numChar, he probado con float, double, cadena de caracteres, etc pero sigue dando mal el resultado.

Saludos
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: ¿ Como utilizar %n ?
« Respuesta #6 en: 29 Septiembre 2012, 22:28 pm »


El ejemplo es el siguiente:

Código
  1. #include <stdio.h>
  2. int main()
  3. {
  4.  int numChars;
  5. float a = 3.14159;
  6. int b = 3490;
  7. printf("%f %d%n\n", a, b, &numChars);
  8. printf("The above line contains %d characters.\n", numChars);
  9. }

La salida es :
Código
  1. 3.141590 3490
  2. The above line contains 13 characters.

Y el siguiente código:
Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.  int val;
  6.  printf("blah %n blah\n", &val);
  7.  printf("val = %d\n", val);
  8.  return 0;
  9. }

da como salida:
Código
  1. blah  blah
  2. val = 5
Como ves da los caracteres hasta ese punto.
PERO, eso es usando el compilador PellesC, porque en Code::Blocks nada de nada, las variables se llenan de "basura".
Saludos.
En línea

Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: ¿ Como utilizar %n ?
« Respuesta #7 en: 29 Septiembre 2012, 22:36 pm »

La salida es :
Código
  1. 3.141590 3490
  2. The above line contains 13 characters.

Eso deberia ser lo correcto, pero a mi no me sale eso.

Saludos.
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: ¿ Como utilizar %n ?
« Respuesta #8 en: 29 Septiembre 2012, 22:44 pm »

Citar
Lo que expuse en el anterior post es que ese formato no es "aconsejable" ya que depende del compilador que cada uno use.
Ya comente que en Code::Blocks no funciona, pero tampoco en Dev-C++, etc, sin embargo en el tal vez menos conocido Pelles C  sí da las salidas esperadas.

Saludos.
En línea

Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: ¿ Como utilizar %n ?
« Respuesta #9 en: 29 Septiembre 2012, 22:46 pm »

Aaah vale vale, ya me quedo claro, muchas gracias.

Saludos
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como utilizar el gets
Programación C/C++
TopoJunior 1 2,310 Último mensaje 4 Julio 2012, 10:27 am
por DickGumshoe
como utilizar subme reverse
Foro Libre
el.keylo 0 1,211 Último mensaje 17 Abril 2014, 19:03 pm
por el.keylo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines