【问题标题】:How do i open a file through a string in C如何通过C中的字符串打开文件
【发布时间】:2016-06-28 04:17:33
【问题描述】:

所以我尝试使用 argc 和 argv 来创建一个字符串并通过我在命令行中输入的内容打开一个文件,但我得到了:

A3.c:14:30: error: expected ‘;’, ‘,’ or ‘)’ before string constant
FILE *fopen(const char * "levelFile.txt", const char * "r+");

在此之后我该如何解析文件。

#include <stdio.h>
#include <stdlib.h>
#include <ncurses.h>

int main(int argc, char *argv[])
{
  int i;

  for(i = 0; i < argc; i++)
  {
      printf("argv[%d] = %s\n", i, argv[i]);
  }

  printf("%s", argv[1]);
  FILE *fopen(const char * "%s", const char * "r+", argv[1]);
}

【问题讨论】:

    标签: c parsing c-preprocessor argv argc


    【解决方案1】:

    FILE *fopen(const char * "%s", const char * "r+", argv[1]); // 错误 - 你把原型和函数调用混为一谈了。

    应该是:

      FILE *pFile = fopen(argv[1], "r+");  // declare a file pointer and initialize it to open the file with desired mode.
      if( NULL == pFile )  // check if file is opened ok.
      {
        fprintf(stderr, "Failed to open file");
      }
    

    【讨论】:

    • 好的,那么我该如何解析文件。我真的不明白打开文件后该怎么做。我需要获取数据并将其存储在结构中。
    • 您可能也不需要r+ 模式,只需读取文件,请使用fopen(argv[1], "r")
    • @chqrlie 同意,但没有说明他是只读取文件还是更新文件。
    • @artm:确实,我实际上是在向 OP 讲话,很抱歉造成混乱。
    【解决方案2】:

    简单的改变

    FILE *fopen(const char * "%s", const char * "r+", argv[1]); 
    

    FILE *fp = fopen(argv[1], "r+"); 
    

    您正在声明一个指向 FILE 的指针,并且需要一个特定的变量名,例如 fp

    另外,fopen() 是一个函数调用,它只能是一个初始化器。 "%s""r+" 是参数,不需要前导 const char *

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-02
      • 2021-10-04
      相关资源
      最近更新 更多