このソースがコンパイルエラーになってしまいます
このソースのどこがわるいのかわかりません
エラー時にこのようなエラーメッセージが出ます
In function `writedata':
52: error: syntax error before string constant
65: error: syntax error before string constant
89:2: warning: no newline at end of file
ソースはこれです
#include <stdio.h>
#include <string.h>
#include <time.h>
typedef struct {
int day;
double dist;
char comment[32];
} diary;
void writedata(char datafile[]);
void viewdata(char datafile[]);
char datadir[] = "dat/";
int year,month,day;
int main(int argc,char *argv[]) {
char datafile[11];
struct tm *date;
time_t now;
now = time(NULL);
date = localtime(&now);
year = date->tm_year + 1900;
month = date->tm_mon + 1;
day = date->tm_mday;
sprintf(datafile,"walk%04d%02d",year,month);
if((argc > 1) && (strcmp(argv[1],"-view")==0)) {
viewdata(datafile);
}
else {
writedata(datafile);
}
return 0;
}
void writedata(char datafile[]) {
diary today_data;
FILE *outfp;
char y_n = 'n';
char filename[15];
char input_str[12];
printf("%d/%d/%dの記録をしますか?(y/n) > ",year,month,day);
scanf("%c", &y_n);
while(getchar() != '\n') { }
if(y_n != 'y') {
printf("記録する日付は?(例:%d %d %d) > ",year,month,day);
year = 0; month = 0; day = 0;
gets(input_str);
sscanf(input_str"%d %d %d",&year,&month,&day);
if((year > 9999) || (month > 12) || (month < 1) ||
(day > 31)|| (day < 1)) {
printf("日付が正しくありません\n");
return;
}
sprintf(datafile,"walk%04d%02d",year,month);
}
today_data.day = day;
printf("距離は? >");
scanf("%lf", &today_data.dist);
while(getchar() != '\n') { }
printf"コメントは?(30文字以内) >");
fgets(today_data.comment, 32, stdin);
if((strlen(today_data.comment) == 31) &&
(today_data.comment[30] != '\n')) {
while (getchar() != '\n') { }
}
sprintf(filename, "%s%s",datadir,datafile);
if((outfp = fopen(filename,"a+")) == NULL) {
printf("ファイルオープンエラー\n");
return;
}
fprintf(outfp , "%d %.2lf",
today_data.day,today_data.dist);
if((strlen(today_data.comment) == 31) &&
(today_data.comment[30] != '\n')) {
today_data.comment[30] = '\n';
today_data.comment[31] = '\0';
}
fprintf(outfp,"%s",today_data.comment);
fclose(outfp);
printf("記録しました");
}
void viewdata(char datafile[]) {
}
なぜ、エラーになったか教えてくださいお願いします
お礼
すみません。解決しました。 ありがとうございました!
補足
自分で書けるところまでやってみました。 #include <stdio.h> main() { char a, b; printf("initials: "); scanf("%c %c", &a, &b); printf("My Initials are %c.%c.\n", a, b); int c, d; printf("month: "); scanf("%d", &c); printf("day: "); scanf("%d", &d); printf("My birth day is %d/%d\n", c, d); double e; printf("height: "); scanf("%lf", &e); printf("My height is %le\n", e); } しかし、これで実行したところ、 「構文エラー:';'が型の前にありません。」 「'a':定義されていない識別子です。」 「'b':定義されていない識別子です。」 c,dも同様になりました。どうすればいいでしょうか?