ファイル入出力サンプル:エラーチェック無し

Last-modified: 2014-04-22 (火) 23:12:14
#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;
}