gpt4 book ai didi

c - 使用命令行输出到文件

转载 作者:行者123 更新时间:2023-11-30 17:54:30 26 4
gpt4 key购买 nike

我正在编写一个应该能够获取命令行参数的程序。基本上,用户在调用程序时必须能够通过命令提示符指定文件名。即程序应该能够接受如下参数:doCalculation -myOutputfile.txt。其中 doCalculation 是我的程序的名称,myOutputfile 是我希望将结果写入的文件(即将计算结果输出到指定的文件名)。

到目前为止,我可以通过命令提示符调用我的函数。我不确定如何让我的程序写入指定的文件名(或者如果该文件尚不存在则创建该文件)。

我的代码如下:

int main(int argc, char *argv[])
{
FILE* outputFile;
char filename;

// this is to make sure the code works
int i = 0;
for (i = 0; i < argc; i++) {
printf("argv[%d] = %s\n", i, argv[i]);
}

//open the specified file
filename= argv[i];
outputFile = fopen("filename", "r");

//write to file
fclose(outputFile);
}

最佳答案

所以我注意到了一些事情......

  1. 如果要写入文件,请在打开文件时使用“w”作为写入模式,而不是“r”作为读取模式。
  2. 您将文件名声明为单个字符,而不是指向字符串 (char *) 的指针。使其成为指针将允许长度> 1的文件名(字符数组而不是单个字符)。
  3. 正如 Ashwin Mukhija 提到的,您在 for 循环之后使用 i 将其设置为 2,而实际上您想要第二个(索引 1)参数。
  4. 您在 open() 函数中将文件名参数作为文字“文件名”而不是文件名变量。

看看这段代码是否有助于解决您的问题(我还在其中添加了一个 fprintf() 来向您展示如何写入文件)。干杯!

int main(int argc, char *argv[])
{
FILE* outputFile;
char* filename;

// this is to make sure the code works
int i = 0;
for (i = 0; i < argc; i++) {
printf("argv[%d] = %s\n", i, argv[i]);
}

//saftey check
if(argv[1])
{
filename = argv[1];

//open the specified file
outputFile = fopen(filename, "w");

fprintf(outputFile, "blah blah");

//write to file
fclose(outputFile );
}

return 0;
}

关于c - 使用命令行输出到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14914824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com