0

基本的に、私のプログラムは、ユーザーが開きたいファイルの名前を入力するように求めます。私のプログラムはそのファイルを開き、その内容を 2D 配列にスキャンすることになっています。しかし、ユーザーが指定したファイルをプログラムが開くようにするにはどうすればよいでしょうか。これまでの私のコードは次のとおりです。

#include <stdio.h>
#include <string.h>
FILE *open_file(int ar[3][4]);

int main()
{
  FILE *fp;
  int ar[3][4];

  fp = open_file(ar);
}

FILE *open_file(int ar[3][4])
{
  FILE *fp;
  int i;
  char file[80];
  printf("Please input file name ");
  scanf("%s", &file); //am I supposed to have written ("%s", file) instead?
  fp = fopen("%s", "r");// very confused about this line; will this open the file?
  for (i = 0; i < 12; i++)
    fscanf(fp, "%d", &ar[i][]); //how do you scan the file into a 2D array?
}

malloc を使用するには、fp = (int *)malloc(sizeof(int));? のように記述する必要があります。

4

2 に答える 2

1
scanf("%s", &file); // am I supposed to have written ("%s", file) instead?

はい、しかしあなたが考える理由ではありません。そう

scanf("%s", file);

代わりに正しいです(説明:%sフォーマット指定子はscanf()を期待するように指示しますが、 addressof 演算子を記述し、未定義の動作を呼び出す型指定子が一致しない場合char *はそれを渡します)。char (*)[80]printf()scanf()

fp = fopen("%s", "r"); // very confused about this line; will this open the file?

いいえ、そうはなりません。という名前のファイルが開きます%s。あなたは書く必要があります

fp = fopen(file, "r");

代わりは。使用できないフォーマット文字列を使用できると仮定しないでください。

于 2013-02-18T21:05:10.673 に答える
0

変数fileにはユーザーが入力したファイルの名前が含まれているので、それを fopen に渡します。あなたが持っているのはフォーマット文字列です。

fp = fopen(file, "r");
于 2013-02-18T21:04:24.053 に答える