#include <stdio.h>
#include <stdlib.h> //exit()
#define N_FILES 1
#define X_MAX 3
#define Y_MAX 3
#define Z_MAX 3
#define FORM "%4d,%4d,%4d,%10d\n"
#define FORM_SIZE 26 //一行当たり
void _create(void);
void _input(void);
void _show(void);
void _correct(void);
FILE *open_file(char*,char*);
int main(void)
{
int cmd;
printf("Sample Database:\n");
printf("\t1. Create\n");
printf("\t2. Input\n");
printf("\t3. Show\n");
printf("\t4. Correct\n");
printf("Select one ");
scanf("%d", &cmd);
switch (cmd) {
case 1:
_create();
break;
case 2:
_input();
break;
case 3:
_show();
break;
case 4:
_correct();
break;
default:
printf("Try again.\n");
break;
}
return 0;
}
void _create(void)
{
char file_name[32];
int i;
FILE *fp;
for(i=0;i<N_FILES;i++){
sprintf(file_name,"A%d.csv",i);
if((fp=fopen(file_name,"w"))==NULL){
printf("Can't open %s file.\n", file_name);
exit(1);
}
}
fclose(fp);
}
void _input(void)
{
int x,y,z,n=0;
FILE *fp;
fp=open_file("file name? ", "w+");
for(z=0;z<Z_MAX;z++){
for(y=0;y<Y_MAX;y++){
for(x=0;x<X_MAX;x++){
fprintf(fp,FORM,x,y,z,n++);
}
}
}
fclose(fp);
}
void _show(void)
{
int x,y,z,n,offset;
FILE *fp;
fp=open_file("file name? ","r");
printf("code x,y,z? ");
scanf("%d,%d,%d",&x,&y,&z);
offset=x + Y_MAX*y + X_MAX*Y_MAX*z;
fseek(fp,FORM_SIZE*offset,SEEK_SET);
fscanf(fp,"%d,%d,%d,%d", &x,&y,&z,&n);
printf("dat(%d,%d,%d)= %d\n",x,y,z,n);
fclose(fp);
}
void _correct(void)
{
int x,y,z,n,offset,value;
FILE *fp;
fp=open_file("file name? ","r+");
printf("code x,y,z? ");
scanf("%d,%d,%d",&x,&y,&z);
offset=x+Y_MAX*y+X_MAX*Y_MAX*z;
fseek(fp,FORM_SIZE*offset,SEEK_SET);
fscanf(fp,"%d,%d,%d,%d", &x,&y,&z,&n);
printf("data(%d,%d,%d)= %d ? ",x,y,z,n);
scanf("%d", &value);
fseek(fp,FORM_SIZE*offset+15,SEEK_SET);
fprintf(fp,"%10d\n",value);
fclose(fp);
}
FILE *open_file(char *comment, char *mode)
{
char file_name[32];
FILE *fp;
printf("%s",comment);
scanf("%s",file_name);
if((fp=fopen(file_name,mode))==NULL){
printf("Can't open %s file.\n", file_name);
ext(1);
}
return fp;
}
お礼
ご回答ありがとうございます、返事を書くのがすごく遅くなってしまいました。 こう言った操作が有った事を知らなかったので、大変勉強になりました。 本当にありがとうございました。