ハイパーニートプログラマーへの道

頑張ったり頑張らなかったり

【ニコニコ動画】ミクと学ぶC言語第15回のコードを改造してみた

※だいぶ前に下書きしたまま放置してたので、問題があるかもしれんですが、まあ投稿しちゃえと。

主にファイルの読み書き、標準入出力とか

練習問題を改造してみた。
一日に貯める金額と、目標貯金額を設定できるようにして、ファイルに書き込んだ結果を表示させる(実際にはファイルから読み込むのではなく、ただ画面に表示させている)ようにしますた。

/* saving.c */
#include<stdio.h>
#include<stdlib.h>

int main(int argc, char const *argv[])
{
	int day=0,sum=0,target,dairy,flag=0,loop=0;

	FILE *fp;
    // print out to file
	fp = fopen("/Users/noriyo_tcp/Desktop/Xcode/CStudy/CStudy/money.txt", "wt"); // ここは絶対パスで指定しました。相対パスは分らん。
	if (fp==NULL)
    {
        fprintf(stderr, "ファイルオープンエラー\n");
        exit(1); // 強制終了
    }
	
    fprintf(stdout, "一日の貯金額(円/4桁):");
    fscanf(stdin, "%5d", &dairy);
    
    fprintf(stdout, "目標の貯金額(円/7桁):");
    fscanf(stdin, "%7d", &target);

    fprintf(fp, "一日の貯金額:%5d\n", dairy);
    fprintf(fp, "目標の貯金額:%7d\n", target);
    fprintf(fp, "+--------------+\n");

	// input data to file
	while (sum<target) {
        day++;
        sum += dairy;
		fprintf(fp, "%5d日目: %7d\n", day, sum);

    }
    fprintf(fp, "%7d万円達成しました!\n", target);
    fprintf(fp, "一日%5d円貯金で\n", dairy);
    fprintf(fp, "%7d円貯めるには\n", target);
    fprintf(fp, "%5d日かかります!\n", day);
	
    fprintf(stdout, "money.txtに保存しました\n");
    do {
        fprintf(stdout, "結果を表示しますか? YES[1] NO[3]");
        fscanf(stdin, "%d", &flag);
        
        switch (flag) {
            case 1:
                fprintf(stdout, "%d円貯めるには%d日かかります。\n", target, dairy);
                loop=1;
                break;
                
            case 3:
                loop=1;
                break;
                
            default:
                loop=0;
                break;
        }
        
    } while (loop==0);
    
    fprintf(stdout, "終了しました。\n");
    fclose(fp);
    return 0;
}