C言語の動的配列について
C言語で下記の課題に取り組んでいるのですが、ファイルから入力された行数分を出力する事に対して、苦戦しております。
恐らく動的配列を使うと思うのですが・・・書き方が分からず、どなたか教えて頂けないでしょうか?
「課題文」
1) 四則演算が出来ること
2) コンソールから計算対象となる数値と演算子を受け取る
例) 5 + 6
3) 結果をコンソール上に表示する
例) 11
4) 演算結果と実行した日、時間、秒をログファイルとして保存する
ログの上限は1000行とする(上限を超過するケースはひとまず考慮しなくて良い)
例) log.txt に 以下の内容を記録
2015/04/27 14:30:51, 5 + 6, 11
5) コンソールに表示する
「ソースコード」
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
int main() {
int num1, num2;
char op;
float answer;
int r,i,n;
FILE* fp;
char c[11];
char sin[][1000];
fp = fopen("log.txt", "a");
if (fp == NULL) {
printf("ファイルオープン失敗\n");
return -1;
}
while (1) {
r = scanf("%d%c%d", &num1, &op, &num2);
if (r != 3) {
puts("input error");
return 1;
}
if (op == '+') {
answer = num1 + num2;
}
else if (op == '-') {
answer = num1 - num2;
}
else if (op == '*') {
answer = num1 * num2;
}
else if (op == '/') {
answer = (float)num1 / num2;
}
time_t t = time(NULL);
struct tm* tm = localtime(&t);
printf("%d/%02d/%02d ", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday);
printf("%02d:%02d:%02d ", tm->tm_hour, tm->tm_min, tm->tm_sec);
printf("%d%c%d,%f\n", num1, op, num2, answer);
fprintf(fp, "%d/%02d/%02d ", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday);
fprintf(fp, "%02d:%02d:%02d ", tm->tm_hour, tm->tm_min, tm->tm_sec);
fprintf(fp, "%d%c%d,%f\n", num1, op, num2, answer);
printf("計算を続けますか?");
scanf("%s\n", &c);
if (strcmp(c, "no") == 0) {
break ;
}
}
for (;;) {
fgets(sin[i], sizeof(sin[0]), fp);
}
fclose(fp);
for (i = 1; i <= n; i++) {
printf("%s", sin[i]);
}
return 0;
}