C言語 エラーを想定する
この時のコメントでNKさんは以下のようにおっしゃっていた。
”C言語の発想は「プログラマを信用して任せます」ということです。うまく書けば速いですが、正しく使いこなせるようになるまでが大変です。大衆車とF1カーの違いといいましょうか。”
まさにその通りで、C言語は「ミス」があってもそのまま強行してしまう場合が散見されます。(配列オーバーとか…)
…ということで、先ほどのプログラムも入力ミスを想定した追記が必要。
#include <stdio.h>
#include <string.h> //strcat()を使うため
#include "Person.h" //さっきのコードを参照
#define MAX_LENGTH 600
#define FILE_LENGTH 100
main () {
FILE *fp; //ファイルポインタ
char *p; //終了判定のためのポインタ
char str[MAX_LENGTH]; //ファイル読込用の領域
char fname[FILE_LENGTH]; //ファイル名格納用文字列
char input[MAX_LENGTH*4]; //読み込んだ行を格納する変数
puts("Please input a file name.");
gets(fname); //ファイル名をfnameに代入
fp = fopen(fname, "r"); //読込モードでfnameを開く
if (fp == NULL) {
puts("The file don't exist!");
} else {
p = fgets(str, MAX_LENGTH, fp); //引数は読込用文字列, 最大読込長, ファイルポインタ
while (p != NULL) {
printf("%s",str); //読み込んだ行を表示
strcat(input, str); //読み込んだ行をinputに格納
p = fgets(str, MAX_LENGTH, fp); //再び一行読み込む
}
}
fclose(fp); //ファイルを閉じる
}
漏れなく指定するのが、マニュアル車(C言語)操作の鉄則ですね…。