2013-12-11 44 views
0

這是接受字符串並在每個字母表的地方顯示'*'的代碼(例如,密碼)。例如,我輸入的密碼比顯示的更多@ assword的密碼,而不是當我清點了string.please幫我.....當我輸入密碼時,第一個字母變得不同,而不是我輸入的內容

#include<iostream.h> 
#include<stdio.h> 
#include<conio.h> 

void main() 
{ 
clrscr(); 
char pass[5]; 

cout<<"\n\n Pass : "; 
int i=0; 
pass[0]=getch(); 
while(pass[i]!=13) 
{  i++; 
    cout<<"*"; 
    pass[i]=getch(); 

} 

cout<<"\n\n"; 

cout<<pass; 

getch(); 
} 
+0

這不完全是他在做什麼 - 他正在閱讀,直到'\ n';但分配確實是錯誤的。 –

+0

我回來了。有沒有一個季節你爲密碼分配5個字符,但輸入更多呢? –

回答

0

你只分配5個字節的密碼,但讀的arbitary的字節數,這將導致非法訪問以及基本上各種(可能)隨機的事情發生,包括像你見過的奇怪的腐敗。

此外,您無法終止您的字符數組,因此您可能會得到隨機密碼後打印的密碼 - 一個pass[++i]='\0';後循環將解決該問題。

嘗試將其增加到一個更大的值,看看是否解決了這個問題。 如果不是,你可以粘貼整個輸出 - 做*搞砸了嗎?是這只是

相關問題