#include <stdio.h> #include <string.h>
#define PASS_LEN_MAX 256 #define PASS_FILE "pass.txt" #define SUCCESS 1 #define NO_PASS_FILE -1
void inputPass(char *pass); void writePass(char *newPass); int readPass(char *pass);
int main(void){ char pass[PASS_LEN_MAX] = {0};
inputPass( pass ); puts( pass ); writePass( pass ); return 0; }
void inputPass(char *pass){ fputs("Input Password: ", stdout); fgets(pass, PASS_LEN_MAX, stdin); }
// パスワードを書き込む際、次の3パターンがある // (a) パスワードファイルが存在しない // (b-1) パスワードファイルが存在し、パスワードが同じ場合 // (b-2) パスワードファイルが存在し、パスワードが異なる場合 void writePass(char *newPass){ char oldPass[PASS_LEN_MAX] = {0}; FILE *fp = NULL;
//パスワードファイルからパスワードを読み取ることに成功 if(SUCCESS == readPass( oldPass )){ // (b-1) パスワードファイルが存在し、パスワードが同じ場合 if( strcmp(oldPass, newPass) == 0 ){ return; } }
// (a) パスワードファイルが存在しない // (b-2) パスワードファイルが存在し、パスワードが異なる場合 fp = fopen(PASS_FILE, "w"); fputs( newPass, fp); fclose(fp); }
int readPass(char *pPass){ FILE *fp;
if((fp = fopen(PASS_FILE, "r")) == NULL){ return NO_PASS_FILE; }
fgets( pPass, PASS_LEN_MAX, fp);
fclose(fp); return SUCCESS; }