2016-04-02 19 views
0
void main() 
{ 
    Password(); 
} 


void Password() 
{ 
    //declare local variables// 
    char cPassCode[] = "String"; 
    int iFlag, iComparison = 0; 

    //Run the code to check the password// 
    while (iFlag = 1) 
    { 
     printf("Please enter the password: "); 
     scanf("%s", cPassCode); 
     iComparison = strcmp(cPassCode,"A23bc5"); 
     if (iComparison == 0) 
     { 
      Header(); 
      ArrayPrinter(Array); 
      iFlag = 0; 
     } 
     else 
     { 
      printf("Wrong password"); 
      iFlag = 1; 
     } 
    } 
} 

Programım için bu kodu kullanıyorum. Bütün program iyi çalışır ama tekrar döngüler geçer. Sanırım benim süre döngü ile ilgisi var. Durumu değiştirmeyi denerseniz, program hiç çalışmıyor. Herhangi bir fikir?Parola İşlevi Hatası

cevap

1

Bir problem burada: while (iFlag = 1) 1 olarak iFlag karşılaştırarak değil, bunu yapmak için 1. Bir doğru şekilde ayarlayarak ediyoruz while (iFlag == 1) ama ifade için daha güvenli bir yol olduğunu: while (1 == iFlag) böylece derleyici olacak o Bir dahaki sefere ==/= hatasını yaptığınızda alınız. IFLAG boolean olarak kullanılıyor beri Ama en iyi yolu, basitçe while (iFlag)

İleri yapmaktır, sen kullanmadan önce iFlag başlatmak gerekir:

int iFlag = 1, iComparison = 0; 

Ve nihayet, bu değil iyi bir yol cPassCode başlatmak için: -:

kullanıcı yazacaktır kaç karakter bilmiyorum gibi

char cPassCode[] = "String"; 

gibi daha büyük bir değer, bir şey kullanın

#define MAXIMUM_INPUT_SIZE 1024 
// ... 
char cPassCode[MAXIMUM_INPUT_SIZE]; 
+0

Teşekkürler! Harika çalıştı. – JMBTaylor

0

Zaman döngüünüz iFlag = 1'u ayarlar, bu nedenle her zaman doğrudur. Karşılaştırma operatörü yerine iFlag == 1. Ayrıca, iFlag'u sıfır yerine 1'a sıfırlamanız gerekir, böylece yeni döngünüz çalışır. Son olarak, cPassCode numaralı malloc'u kullanmalısınız, ancak bu programınızı çökertmez (muhtemelen).