【问题标题】:printf "%n" specifier not working properlyprintf "%n" 说明符不能正常工作
【发布时间】:2021-04-15 14:06:00
【问题描述】:

我从极客那里复制了这段代码。

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

它应该打印从开始到%n的字符,然后是打印的字符数:

但是当我执行它时,它会打印这个:

【问题讨论】:

  • 检查你的环境,不是每个环境都支持%n
  • 我正在使用 clion 和 mingw
  • clion 是一个 ide。什么编译器?
  • 如果你初始化你的变量会发生什么变化?喜欢int c=42;
  • 为了澄清之前的评论,没有将值赋给c

标签: c printf specifier


【解决方案1】:

看来问题出在老版本的MingW没有默认设置__USE_MINGW_ANSI_STDIO,新版本不是这样,你可以在你的程序中手动定义:

# define __USE_MINGW_ANSI_STDIO

#include <stdio.h>

int main()
{
    //...
}

或者直接在编译命令上使用:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    相关资源
    最近更新 更多