2016-04-19 7 views
1

Ich habe gerade entdeckt, dass die Funktion fprintf verwendet werden kann, um etwas auf den Bildschirm zu drucken.C - fprintf und printf Inside Loops drucken nicht auf den Bildschirm

Ich habe dieses Minimum gerade unten, aber es gibt nichts auf den Bildschirm aus. Warum?

#include <stdio.h> 

int main(void) 
{ 
    int i,j,k; 

    for(i=0;i<4;i++) 
    { 
     for(j=0;j<0;j++) 
     { 
      for(k=0;k<3;k++) 
      { 
       printf("test\n"); 
       fprintf(stderr, "test\n"); 

      } 
     }  
    } 

    return 0; 
} 

Ich bin Ubuntu 14.04 und kompilieren den Code wie folgt ausgeführt werden: gcc main.c -o Haupt

Antwort

2

Ihre zweite Schleife ist falsch. j wird auf Null initialisiert und die Bedingung ist j<0. Bei for-Schleifen wird die Bedingung vor der ersten Iteration ausgewertet.

+0

omg .... Haben Sie eine Ahnung, wie viel Zeit ich verloren habe, auf der Suche nach diesem ... –

+2

@ J.Doe Ja, das tue ich. Wir haben alle diese Art von Fehlern gemacht. –

5

Warum sollte es etwas drucken? Einer Ihrer Schleifen hat einen unmöglichen Zustand:

for(j=0;j<0;j++) 
       ^--- 

seit j beginnt bei 0, es nie weniger als 0 sein kann, so dass die Schleife beendet sofort, ohne jemals den Körper ausgeführt wird.

0

Ich habe dieses Minimum gerade unten, aber es gibt nichts auf den Bildschirm aus. Warum?

Es wäre nicht, weil Kontrolle nie erreicht die printf() Aussage. Weil Ihre mittlere for loop eine Testbedingung hat, die immer ausfällt, die verhindert, dass sogar innere for loop ausgeführt wird.

for(j=0;j<0;j++) 
. 
. 

Die Bedingung j<0 wenn j mit 0 initialisiert wird, ergibt immer false. Fix die mittlere for loop und Ihr Problem wird gelöst.

Sie können Ihr Programm mit gdb debuggen. Erlernen Sie einige Befehle, um mit gdb zu arbeiten, und Sie können selbst sehen, wo das Problem liegt.