###発生している問題・エラーメッセージ
お世話になります。
現在、私が解きたいのは以下の例題です。
「コンソールより氏名、生年月日を入力させて、年齢を出力する。
また、再度起動時に同一氏名入力時は生年月日と年齢を出力する。」
しかし、『再度起動時に同一氏名入力時は生年月日と年齢を出力する。』
が出来ないまま、『氏名、生年月日の入力⇒年齢の出力』のループを繰り返してしまいます。
是非、ご教授頂ければと思います。よろしくお願い致します。
エラーメッセージ なし
###該当のソースコード
以下、ソースコードです。 #include<stdio.h> #include<string.h> #include<stdlib.h> #pragma warning(disable:4996) int main(void) { FILE *fp; char name[256]; int year,month,day; int year2,month2,day2; int y; year=0; month=0; day=0; year2=0; month2=0; day2=0; y=0; for (int i=0;;i++){ /*名前入力*/ printf(" あなたの氏名は ? "); scanf_s("%s",name); /*ファイル入力*/ fp= fopen("a.txt","r"); char cBuf[256]; memset(cBuf,0x00,sizeof(cBuf)); fgets(cBuf,sizeof(cBuf)-1,fp); /*ファイルがNULLの時*/ if(fp==NULL){ printf("ファイルをオープンできません¥n") return -1; } /*ファイルがNULLじゃない時*/ else if(fp != NULL){ /*名前一致*/ if(strcmp(cBuf,name))==0){ fprintf(fp,"あなたは%d年%d月%d日生まれの%d歳ですね¥n",year,month,day,y); break; } /*名前が不一致*/ else{ while(fgets(name,256,fp) != NULL){ printf("%s",name); } } /*生年月日入力計算*/ printf(" 生年月日? "); fflush(stdin); scanf_s("%d %d %d",&year,&month,&day); year2=2017; month2=11; day2=21; y=year2-year; if(month2 < month){ y--;} else if(month2==month && day2 < day){ y--;} printf("あなたは%d歳ですね¥n",y); /*ファイル出力*/ fp = fopen("a.txt","w"); if(fp == NULL){ printf("ファイルをオープンできません¥n"); return 1; } else if(fp != NULL){ fprintf(fp,"%s,%d,%d,%d,%dn",name,year,month,day,y); fclose(fp); } } } }
###試したこと
課題に対してアプローチしたこと
再度起動の方法が分からず、if文やwhile文、goto文など試してみたが上手く行かなかった。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
言語:C/ツール:VisualStudio2008
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/22 02:06
2017/11/22 02:18
2017/11/22 04:09