[C con Clase] especificador de formato %n

Davidson, Steven srd4121 en njit.edu
Sab Sep 29 23:06:14 CEST 2012


Hola César,

2012/9/29 cesar arias <sinatra435 en hotmail.com>:
> Hola, me ayudan a utilizar el especificador de fomato %n. Tengo el siguiente
> codigo, pero no muestra el resultado que esperaba:
>
> #include <stdio.h>
>
> int main() {
>
>     int numChars;
>         int a = 1;
>         int b = 12;
>
>         printf("%d %d %n", a, b, &numChars);
>         printf("\nThe above line contains %d characters.", numChars);
>
>     return 0;
> }
>
> Se supone que numChars almacena la el numero de caracteres escritos asta
> donde esta %n, pero no es lo que sucede.
>

El problema es que estás usando la versión de 'printf()' de MS-Windows
Vista/7. Para arreglar un problema de seguridad usando %n, por
defecto, su versión de 'printf()' ignora %n. Si quieres habilitar este
especificador, entonces tienes que invocar la función,
'_set_printf_count_output()', de MS-Windows, con un entero distinto de
0 (cero). Por ejemplo,


int main()
{
  _set_printf_count_output( 1 );
  ...
  printf( "%d %d %n", a, b, &numChars );
  ...
}

Y ahora funcionará debidamente. Claro que en otras plataformas, esto
no es un problema.

Ahora bien, con el ejemplo que has puesto, puedes guardar el entero
retornado por 'printf()' para saber la cantidad total de caracteres
impresos.


Espero que esto aclare la duda.

Steven




Más información sobre la lista de distribución Cconclase