2017-10-22 21 views
0

-1をタイプするまで連続した数字を導入するCプログラムがありますが、gcc( "$ gcc act.c -o act")を使ってコンパイルするとうまく動作します。今私はdevC++とTDM-GCC 4.9.2でWindows 10を使い、出力が失敗するCプログラムの繰り返し0を取り除こうとしています

"1 5 6 7 8 0 0 0 5 5 6 6 6 6 8 4 1 0 0 0 2 5 0 5 6 8 " 出力は" 1 5 6 7 8 0 5 5 6 6 6 8 4 1 0 2 5 0 5 6 8

私はLinuxの作品で言ったように、ウィンドウ上で出力この場合の最初の数字だけです。

私のコードで何が間違っていますか?

コード:

#include <stdio.h> 
int main(){ 
    int secuencia_numeros; 
     int aux_secuencia_numeros = -1; //Utilizamos el -1 como numero auxiliar 
     printf("\n\n\t Quitar ceros consecutivos.\n\n"); 
     printf("Introduce una secuencia de numeros [fin = -1]: "); 
     scanf("%d",&secuencia_numeros); 
     while(secuencia_numeros != -1) { 
       fflush(stdin); 
       if((secuencia_numeros ==0)&&(aux_secuencia_numeros == 0)) { 
       }else{ 
         printf("%d ",secuencia_numeros); 
       } 
       aux_secuencia_numeros = secuencia_numeros; 
       scanf("%d",&secuencia_numeros); 
     } 
     printf("\n"); 
     return 0; 
} 
+2

チェックリターンは、標準入力をフラッシュしようとしないでください。 – Yunnosch

+1

このプログラムは動作します... fflushを使用しません – coderredoc

+0

はい、それはあなたのWindowsのexeを上げる 'fflush(stdin)'です。 (さらに簡潔な変数名を使うことを検討してください。 'n'と' prev'はどうですか?結局、単一の数字は "secuencia"ではありません) –

答えて

2

fflush(stdin)は未定義の動作を持っています。だから、それを使わないでください。

一部の実装では、読み込み用に開いたストリームをフラッシュすると、入力バッファがクリアされます(ただし、これは移植可能な動作ではありません)。

のscanfの

1. Link

+0

今、それは修正されました! – OsmaK

関連する問題