2013-10-13 6 views
1

좋아요, 로그인 및 암호가 필요한 C 프로그램을 만들려고합니다. 처음 실행하면 사용자가 로그인과 암호를 입력하라는 메시지를 표시 한 다음이 정보를 전역 구조체에 저장하고이 전역 구조체를 디스크에 저장합니다. 문제가있는 부분은 암호입니다. 사람의 암호가 화면에 표시되지 않도록 코드를 만들려고합니다. 여기에 암호 내 기능입니다 :암호 기능이 작동하지 않습니다.

void senha(void) 
{ 
    static int senhac = 0; 
    char temps[32]; 
    do 
    { 
     temps[senhac] = getchar(); 
     if(temps[senhac] == EOF) 
      return; 
     putchar('*'); 
     conta->senha[senhac] = temps[senhac]; 
     senhac++; 
     fflush(stdin); 
    } 
    while(1); 
} 

는 글로벌 구조체는 이것이다 :

struct accounts { 
    char login[32]; 
    char senha[32]; 
    }; 
struct accounts *conta; 

프로그램이 "senha (무효)"에 도달 기능, 그것은 충돌합니다. 컴파일러에서 경고 또는 오류를 표시하지 않습니다. 무엇이 잘못 될 수 있습니까?

답변

0
do 
    { 
     temps[senhac] = getchar(); 
     if(temps[senhac] == EOF) 
      return; 
     putchar('*'); 
     conta->senha[senhac] = temps[senhac]; 
     senhac++; 
     fflush(stdin); 
    } 
    while(1); 

temps 배열의 크기 인 array out of bounds and overflow보다 더 많은 반복을 반복하고 있습니다.

체크 조건 while(senhac<32);

+1

당신의 답은 저를이 문제에서 구해 냈습니다. 고맙습니다. –

+0

당신은 환영합니다 ... – Gangadhar

0

getchar() 반환 int. temps[32]int으로 선언하십시오. MS-DOS가 아닌 경우 fflush(stdin);은 정의되지 않은 동작을 호출합니다.

관련 문제