Search code examples
cprintfspecifier

printf "%n" specifier not working properly


I copied this code from geeks for geeks.

#include<stdio.h>
  
int main()
{
  int c;
  printf("geeks for %ngeeks ", &c);
  printf("%d", c);
  getchar();
  return 0;
}

It should print the characters from start to %n followed by the number of printed characters:

enter image description here

But when I execute it, it's printing this:

enter image description here


Solution

  • It seems that the problem lies in the fact that older versions of MingW do not set __USE_MINGW_ANSI_STDIO by default, which is not the case for newer versions, what you can do is to manually define it in your program:

    # define __USE_MINGW_ANSI_STDIO
    
    #include <stdio.h>
    
    int main()
    {
        //...
    }
    

    Or use it directly on the compilation command:

    gcc main.c -o main.exe -D __USE_MINGW_ANSI_STDIO