2017-01-14 34 views
0

アスタリスクで入力を隠すパスワードプログラムのサンプルコードは、オンラインでたくさんあります。これらのプログラムは、CodeBlocks IDEでコンパイルしたときに、*という文字を入力するたびに出力されます。私はCLion IDEを使用する場合C++で入力パスワードのアスタリスクを表示する方法

Enter Password : ****** 
You entered : iiiiii 
Process returned 0 (0x0) execution time : 6.860 s 
Press any key to continue. 

しかし、私は私が入力した文字を確認できます。

Enter Password :iiiiii 
****** 
You entered : iiiiii 
Process finished with exit code 0 

この差は2つのIDEの間に存在する理由を誰かが説明できますか?

私が使用していたコードは(私はそれをオンラインで見られる)である:それはないなぜ私はこの1つのように多くの質問があること

#include <iostream> 
#include <conio.h> 
#include <stdlib.h> 
using namespace std; //needed for cout and etc 

int main() 
{ 
    START: 
    system("cls"); 
    cout<<"\nEnter Password : "; 
    char pass[32];//to store password. 
    int i = 0; 
    char a;//a Temp char 
    for(i=0;;)//infinite loop 
    { 
     a=getch();//stores char typed in a 
     if((a>='a'&&a<='z')||(a>='A'&&a<='Z')||(a>='0'&&a<='9')) 
      //check if a is numeric or alphabet 
     { 
      pass[i]=a;//stores a in pass 
      ++i; 
      cout<<"*"; 
     } 
     if(a=='\b'&&i>=1)//if user typed backspace 
      //i should be greater than 1. 
     { 
      cout<<"\b \b";//rub the character behind the cursor. 
      --i; 
     } 
     if(a=='\r')//if enter is pressed 
     { 
      pass[i]='\0';//null means end of string. 
      break;//break the loop 
     } 
    } 
    cout<<"\nYou entered : "<<pass; 
    //here we can even check for minimum digits needed 
    if(i<=5) 
    { 
     cout<<"\nMinimum 6 digits needed.\nEnter Again"; 
     getch();//It was not pausing :p 
     goto START; 
    } 
    return 0; 
} 
//Lets check for errors. 
//You can even put file system. 

知っている、しかし、それらのどれも説明できませんでしたCLion IDEを使用しているときに動作します。

+2

あなたは、私が実際にncurse、@EdHealを使用するので、どのようにだろうていませんでした –

+0

[ncurse](https://en.wikipedia.org/wiki/Ncurses)のようなものを使用する必要があります私はncurseでプログラムを作っていますか? –

答えて

1

たぶん

#include <conio.h> 

int main() 
{ 
    char s[10] = { 0 }; 
    int i; 
    for (i = 0; i < 10;i++) { 
     s[i] = _getch(); _putch('*'); 
     if (s[i] == 13) break; 
    }; 
    printf("\nYour pass is %s", s); 
    getchar(); 
    return 0; 
} 
+1

''、 '_getch()'、 '_putch()'はMS-DOSコンパイラでしか見つからないポータブルな機能です。 –

+1

@MikeKinghan Visual C++やMinGWなどのWindowsコンパイラでもサポートされています。 –

関連する問題