对于此程序,我应该将自己的名称写入终端或由用户给出的输出文件(case 'f'
)。程序未使用命令行上指定的名称创建文件
#include <stdio.h>
int main(int argc, char **argv)
{
// no output file print to screen, print name to terminal
if (argc < 2)
{
fprintf(stdout, "name\n");
}
//print name to output file given by user
else
{
int option;
int fFlag = 0;
while ((option = getopt(argc, argv, "f:")) != -1)
{
//if case 'f' print to output file
switch (option)
{
case 'f':
fFlag = 1; // flag indicates writing name to file
break;
//case f or error
case '?':
printf("error");
break;
}
}
//write to name to output file
if (fFlag)
{
FILE *file = fopen(argv[1], "w");
fprintf(file, "name");
}
}
return 0;
}
我的代码工作时,我想我的名字写入到终端,但是当我想要我的名字写入到用户指定的文件不起作用。代码编译并运行,但文件不存在。
命令行中的文件可能不存在。我应该在程序中创建文件吗?
我明白我做错了什么。谢谢大家!
您是否(a)检查到'argv [1]'包含您尝试打开的写入访问的文件名,(b)在尝试写入文件之前检查'file'是否为非NULL,和(c)假设这两个平移,确保你的程序正在执行的*当前工作目录*建立你试图创建的文件?现在,(a)和(b)似乎是潜在的候选人,后者是违反[Spencer's Sixth Commandment](http://www.seebs.net/c/10com.html) – WhozCraig
的最好例子。通过重新格式化的代码,它出现'fprintf(file,“name”);'只在'argc <2'的情况下 – chux
除了以前的评论,我认为你也忘了在写完fclose(file)之后。 –