0

基本上,我的程序会提示用户输入他想要打开的文件的名称。我的程序应该打开该文件并将其内容扫描到二维数组中。但是你怎么做才能让程序打开用户指定的文件呢?到目前为止,这是我的代码:

#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()期望 a ,但是如果您编写 addressof 运算符,并且不匹配类型说明符并调用未定义的行为,则您char *将传递它 a )。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 回答