メイン関数の3-2と4のline[N]のところにエラーが出ます.
正しいコードにするにはどうしたらいいのか教えてください.
以下が現在のコードです.他にもおかしいところがあったら教えてください.
よろしくお願いします.
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
// 定数定義
#define N 3
// プロトタイプ宣言
void addLine(string aline, string line[N], int num); // 読み込んだ1行を最近読み込んだN行に追加する。
void showLine(string line[N], int num); // 最近読み込んだN行を表示する。
/********************************
メイン関数
********************************/
void main() {
ifstream file; // 入力ファイル
string aline; // 読み込んだ1行の文字列
string line[N]; // 最近読み込んだN行の文字列
int num; // 読み込んだ行数
// 1. 入力ファイルを開く。
file.open("plain.txt");
// 2. 読み込んだ行数を 0 に初期化する。
num = 0;
// 3. ファイルの末尾に到達するまで以下の処理を繰り返す。
while (!file.eof()) {
// 3 - 1. 入力ファイルから1行読み込む。
getline(file, aline);
// 3 - 2. 読み込んだ1行を最近読み込んだN行に追加する。
addLine(aline,line[N],num);
// 3 - 3. 読み込んだ行数を1増やす。
num++;
// 4. 最近読み込んだN行を表示する。
showLine(line[N],num);
// 5. 入力ファイルを閉じる。
file.close();
}
}
/********************************************
読み込んだ1行を最近読み込んだN行に追加する。
********************************************/
void addLine(string aline, string line[N], int num) {
// 1. 読み込んだ行数がNより小さければ line[num] に aline を代入する。
if (num < N) {
line[num] = aline;
}
// 2. そうでなければ以下の処理を行う。
else {
// 2 - 1. 変数 i を0~N - 2まで変えながら以下の処理を繰り返す。
for (int i = 0; i > N - 2; i++) {
// 2 - 1 - 1. line[i + 1] の値を一つ前の line[i] にずらす。
line[i + 1] = line[i];
// 2 - 2. line[N - 1] に aline を代入する。
line[N - 1] = aline;
}
}
}
/********************************************
最近読み込んだN行を表示する。
********************************************/
void showLine(string line[N], int num) {
// 1. 変数 i を0~N - 1まで変えながら以下の処理を繰り返す。
for (int i = 0; i > N - 1; i++) {
// 1 - 1. i が読み込んだ行数より小さければ line[i] を表示する。
if (i < num) {
cout << line[i];
}
}
}