2017-12-14 3 views
-1

안녕하십니까. C의 간단한 로그인 프로그램을 사용해야합니다. 사용자 이름, 성함 및 비밀번호를 저장하는 데 문제가 있습니다. 가입시 '1'을 선택해야하고 '2 '로그인하지만 항상 콘솔을 끝내고 내 파일을 읽으려고하면 모든 것이 사라집니다.텍스트를 파일에 영구 저장하고 읽을 수 있습니다.

#include <stdio.h> 

int main() { 

FILE *f = fopen("users.txt", "w+"); 

if (f == NULL) { 
printf("N/A"); 
exit(1); 
} 

int choose, 
username[15], 
fullName[20], 
password[15], 
// confirmPassword[15]; 

printf("Welcome!\n"); 
printf(" 1: Sign up\n 2: Sign in\n"); 
printf("--------------------------------\n"); 
scanf("%d", &choose); 

if(choose==1) { 

    printf("Username: "); 
    scanf("%s", &username); 

    printf("Full name: "); 
    scanf("%s", &fullName); /// BECAUSE OF SPACE IT COUNTS LIKE A PASSWORD 

    printf("Password: "); 
    scanf("%s", &password); 

    fprintf(f, "%s\n%s\n%s", username, fullName, password); 

} 

if(choose==2) { 

    char c; 

    printf("Username: "); 
    while(c != EOF) { 

     c = fgetc(f); 
     printf("%c",c); 

    } 
} 

fclose(f); 

return 0; 
} 

나는 해시도 처리해야하지만 나는 스스로 시도 할 것이다. /// 덧글에 대해 도와주세요!

+0

의견에 문제가 있습니까? –

+0

@ GerardoBLANCO 문제는 내가 성명을 입력 할 때 공간을 사용해야 할 때 & 비밀번호에 두 번째 단어를 저장하는 프로그램입니다. – jovkm

+0

은 https://stackoverflow.com/q/47816312/2410359처럼 보입니다. – chux

답변

0

이전 생각에 따라, 내 생각에 다음 코드를 수정하는 방법은 다음과 같습니다. 1. int c 또는 unsigned int c를 사용하여 C 변수를 선언하십시오. 2. c tp be를 설정합니다 (EOF가 아닌 길이 여야 함). 3. make do while 루프는 EOF를 확인합니다.