C言語テキストファイルをデータベースとするユーザ登録
簡単なC言語の例で、ユーザーの登録を実現し、登録した情報をテキストファイルに入れる.登録情報は重複せず、すべての登録情報を表示できます.
ヘッダファイル(user_data.h):
ソースファイル(user_regist.c):
実行する前に、作業ディレクトリの下にuserという名前を作成します.txtのテキストファイルで、データを格納します.
実行結果は次のとおりです.
ヘッダファイル(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のテキストファイルで、データを格納します.
実行結果は次のとおりです.