printf "%n" specifier not working properly

271 views Asked by At

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

1

There are 1 answers

0
anastaciu On BEST ANSWER

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