C言語 ファイル入出力について
Posted: 2014年9月30日(火) 20:27
名前、生年月日を入力されて年齢を出力し、再起動時に同一氏名入力時は生年月日と年齢を出力する
上記の問題で、下記のプログラミングを訂正致しました。
最初の年齢が出るところまでしかいきません。
他に何か間違いなどあれば、現在手元に実行できるものがないので直して教えて頂けると幸いです。
宜しくお願い致します。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main (void)
{
FILE *fp;
char name[256];
char cBuf[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;
/*名前入力*/
printf("あなたの氏名は ? ");
scanf("%s",name);
/*ファイルオープン*/
fp = fopen ("a.txt","r");
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( cBuf == name ){
fprintf(fp,"あなたは%d年%d月%d日生れの%d歳ですね\n",year,month,day,y);
}
/*名前が不一致*/
else if ( cBuf != name ){
while ( fgets (name,256,fp) != NULL ){
printf("%s",name);
}
/*生年月日入力計算*/
printf("生年月日 ? ");
scanf("%d%d%d",&year,&month,&day);
year2 =2014;
month2 =9;
day2 =30;
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,%d\n",name,year,month,day,y);
fclose(fp);
}
}
}
}
上記の問題で、下記のプログラミングを訂正致しました。
最初の年齢が出るところまでしかいきません。
他に何か間違いなどあれば、現在手元に実行できるものがないので直して教えて頂けると幸いです。
宜しくお願い致します。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main (void)
{
FILE *fp;
char name[256];
char cBuf[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;
/*名前入力*/
printf("あなたの氏名は ? ");
scanf("%s",name);
/*ファイルオープン*/
fp = fopen ("a.txt","r");
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( cBuf == name ){
fprintf(fp,"あなたは%d年%d月%d日生れの%d歳ですね\n",year,month,day,y);
}
/*名前が不一致*/
else if ( cBuf != name ){
while ( fgets (name,256,fp) != NULL ){
printf("%s",name);
}
/*生年月日入力計算*/
printf("生年月日 ? ");
scanf("%d%d%d",&year,&month,&day);
year2 =2014;
month2 =9;
day2 =30;
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,%d\n",name,year,month,day,y);
fclose(fp);
}
}
}
}