初めまして。今テキストに1月1日~12月31日までの誕生日をテキストに書き、そして自分の誕生日を入力すると同じ誕生日の人が出力されるプログラムを作りたいのですがここまで作りましたのでおかしな点がありましたら是非おしえていただきたいのですが。WINDOWSのC++です#include<stdio.h>
#include<string.h>
main()
{
FILE *fp,*fopen;
char *field1 = %2d%2d%30s;
char *field2 = %-2d%-2d%-30s;
int table[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
int tanjyo_m, tanjyo_d;
char yumei[30];
int stanjyo[12];
int n,f;
long rec = 40;
fp = fopen(a:\\tanjou.txt,r);
if(fp == NULL){
fprintf(stderr,READ ERROR!!\n);
}
printf(\n誕生日は何月ですか??);
scanf(%d,&tanjyo_m);
printf(\n誕生日は何日ですか??);
scanf(%d,&tanjyo_d);
n = 0;
while(n<=4){
fseek(fp,n*rec,0);
fscanf(fp,field1,tanjyo_m,tanjyo_d,yumei);
if(f == 0){
fprintf(stdout,field2,tanjyo_m,tanjyo_d,stanjyo);
}
n++;
}
fclose(fp);
}
私的意見を少々、
> char *field1 = %2d%2d%30s;
> char *field2 = %-2d%-2d%-30s;
私なら、
#define FIELD1 %2d%2d%30s
#define FILED2 %-2d%-2d%-30s
にします。
> int table[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
これでも問題ないですが、
int table[] = {31,29,31,30,31,30,31,31,30,31,30,31};
この方が良いかと思います。
> while(n<=4){
>
> ~中略~
>
> n++;
> }
この部分は for(n = 0; n <= 4; n++) の方が見やすいかと思います。
以上、完全に個人的意見ですがどうでしょうか?
間違いのは fscanf(fp,field1,tanjyo_m,tanjyo_d,yumei); と思う
=>fscanf(fp,field1,&tanjyo_m,&tanjyo_d,yumei);