よし、ファイルがあって、それを使って何かをしなければならない。単純化しすぎると、ファイルの形式は次のようになります。
n
first name
second name
...
nth name
random name
do x⁽¹⁾, y⁽¹⁾ and z⁽¹⁾
random name
do x⁽²⁾, y⁽²⁾, z⁽²⁾
...
random name
do x⁽ⁿ⁾, y⁽ⁿ⁾, z⁽ⁿ⁾
したがって、実際の詳細は重要ではありません。問題は、変数 n を宣言する必要があり、配列 name[MAX] があり、この配列に name[0] から name[n-1] までの名前を入力することです。
さて、問題は次のとおりです。自分が何人の名前を持っているかを以前に知らなかった場合、どうすればこの入力を取得できますか?
たとえば、それがキーボードからのユーザー入力であれば、問題なく実行できます。次のようにします。
int n; char name[MAX];
scanf( "%d", &n);
int i; for (i = 0; i < n; i++)
scanf( "%s", &N[i]);
そして、コード全体を実行することもできますが、要点はわかります。しかし、私の入力はファイルから来ています。入力を取得する方法がわかりません。できることは、ファイル全体を fscanf() することだけですが、そのサイズがわからないため (最初の数値で決定されます)、実行できません。私の知る限り(そうでない場合は訂正してください。私はこれに非常に慣れていません)、コマンド「for」を使用して、キーボードから入力されているかのように数字を徐々に取得することはできませんよね?
したがって、私が目にする唯一の出口は、ファイルから特定の行を読み取る方法を見つけることです。これができればあとは簡単です。問題は、どうすればそれができるかということです。私はそれをグーグルで検索しましたが、そこにはいくつかの質問さえありましたが、まったく意味がありませんでした. どうやら、ファイルから特定の行を読み取るのは非常に複雑です。
これは初歩的な問題集なので、そこまで難しいものではないと思います。それが何であるかはわかりませんが、非常に単純なものが欠けているに違いありません。
では、質問は、たとえば、どのようにしますか?
ファイルから最初の番号 n をスキャンし、次に残りの 'n' 個の名前をスキャンして、それぞれを配列内の要素に割り当てる方法 (名 = 名前 [0]、姓 = 名前 [n - 1]) ?