c++ - 更改代码,以便从命令行输入您要编写的文件的名称

标签 c++ c

我已经更改了代码。我执行以下操作:

  1. 打开终端
  2. 编写gcc program.c -o program1
  3. ./程序1
  4. 我收到错误!

我得出结论,没有文件正在创建,指针 fptr==0 这就是我收到该错误的原因。此外,当我在 ./program1(如 ./program 1 2)之后输入更多字符串或整数时,显示“错误!”再次。这是代码:

#include <stdio.h>
int main(int argc, char *argv[]){
  int n;
  FILE *fptr;
  fptr=fopen(argv[0],"w");
  if(fptr==NULL){
        printf("Error!");
        exit(1);
  }
  printf("Enter n: ");
  scanf("%d",&n);
  fprintf(fptr,"%d",n);
  fclose(fptr);
  return 0;
}

最佳答案

argv[0]是程序名,如果传递文件路径,应该使用argv[1]

尝试像这样启动:

$ ./program mypath/file.name

argv[0]是程序,argv[1]是mypatch/file.name

关于c++ - 更改代码,以便从命令行输入您要编写的文件的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34372884/

相关文章:

c - 如何在 Sublime Text 2 中运行 C 程序

c - 子进程执行 exec 系统调用的结果

c++ - 类中的字符串//C++

c++ - 有史以来最简单的互斥量。这个例子行得通吗?它是线程安全的吗?

c++ - 什么时候必须将 io_context 传递给 boost::asio::spawn? (C++)

c++ - extern "C"(C联动)默认

objective-c - 在 C/C++ 中使用 THIS->

c - 系统调用未定义!编译内核模块

C - 像二进制数一样遍历 0 和 1 的数组

c++ - 如何在 Qt 中创建和加载 SQLite?