C言語テキストファイルをデータベースとするユーザ登録


簡単なC言語の例で、ユーザーの登録を実現し、登録した情報をテキストファイルに入れる.登録情報は重複せず、すべての登録情報を表示できます.
ヘッダファイル(user_data.h):
#include <stdio.h>

typedef struct 
{
	char key[10];
	char name[20];
	int age;
}User;
int regist();
void read_user();

ソースファイル(user_regist.c):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include "user_data.h"
int regist()
{
	User user,temp;
	FILE* fp;
	int fr;
	printf("     :");
	//gets(user.key);
	scanf("%s",user.key);
	printf("     :");
	//gets(user.name);
	scanf("%s",user.name);
	printf("     :");
	scanf("%d",&user.age);

	//             
	fp=fopen("user.txt","rb");//           
	if(fp==NULL)
		printf("      !
"); while(1) { fr=fread(&temp,sizeof(User),1,fp); if(fr==0) { break; } if(strcmp(temp.key,user.key)==0) { printf(" , !
"); fclose(fp); return 1; } } fclose(fp); // fp = fopen("user.txt","ab+"); fwrite(&user,sizeof(User),1,fp); fclose(fp); printf(" !
"); return 0; } void read_user() { FILE *fp; int fr; User temp; fp=fopen("user.txt","rb"); while(1) { fr=fread(&temp,sizeof(User),1,fp); if(fr==0) { break; } printf("%s\t%s\t%d
",temp.key,temp.name,temp.age); } } int main() { int i; printf("**************************
"); printf(" :
1. \t2. \t3.
"); printf("**************************
"); scanf("%d",&i); while(1) { switch (i) { case 1: regist(); break; case 2: read_user(); break; default: return 0; } printf("**************************
"); printf(" :
1. \t2. \t3.
"); printf("**************************
"); scanf("%d",&i); } return 0; }

実行する前に、作業ディレクトリの下にuserという名前を作成します.txtのテキストファイルで、データを格納します.
実行結果は次のとおりです.