【问题标题】:Printf in for loop doesn't work without a printf preceded outside the loop如果没有循环外的 printf,for 循环中的 Printf 将不起作用
【发布时间】:2013-04-19 14:02:13
【问题描述】:

我一直遇到这个问题:当我尝试打印一个带有 2 个 for 循环的数组时,没有任何反应,屏幕空白。当我在循环之前添加printf(任何类似printf("1");)时,循环打印会在执行中显示。 代码:

for(j=0;j<i;j++){
    printf("\n");
    for(k=0;k<i;k++){
        printf("%6d",*(polje+j*i+k));
    }
}

程序不仅不打印循环,而且如果我不在循环外使用另一个printf,x.exe 就会停止工作。

【问题讨论】:

  • 主要与缓冲输出有关。在 printf 中添加 \n 可以解决问题。还有其他方法可以强制无缓冲标准输出。
  • 在您输出换行符之前,内部循环中的打印可能不会出现。通常,您将换行符放在内部循环之后:for (int j = 0; j &lt; i; j++) { for (int k = 0; k &lt; i; k++) printf("%6d", polje[i*j+k]); putchar('\n'); }

标签: c loops for-loop crash


【解决方案1】:

尝试在第二个printf 之后致电fflush(stdout);

【讨论】:

    【解决方案2】:

    试试这个:

    for(j=0;j<i;j++){
        printf("\n");
        for(k=0;k<i;k++){
            printf("%6d",(polje+j*i+k));
        }
    }
    

    我在第二个 printf 中删除了 *.. 它在右侧乘以任何东西

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 2018-06-30
      相关资源
      最近更新 更多