我有一个函数./transform
,该函数需要为输入和输出文件采用两个命令行参数。
就像这样:./transform "inputfile" "outputfile"
然后,我尝试使用fopen
读取文件,以将文件中的每个字符存储到字符数组char token[1024]
中。输入文件中的字符总数始终为<= 1024。
我收到有关fopen
的参数数量错误的错误。这是我要完成的工作的伪代码。
void main(FILE *inputFile, FILE *outputFile){
char token[1024];
token = fopen(&inputFile, "r");
}
是的,我知道我正在尝试将FILE值分配给Char值...我以这种方式编写它,以表明我想要存储在字符数组中的inputFile中的每个字符。我不确定如何正确执行操作。执行完程序代码(将文件中的十六进制和整数值转换为ASCII)之后,我需要将转换后的ASCII文本保存到用户定义的输出文件中。
答案 0 :(得分:0)
您尝试过的代码几乎没有问题,首先在这里
void main(FILE *inputFile, FILE *outputFile){ }
您正在尝试更改main()
的原型,这是不正确的。根据{{3}} 第5.1.2.2.1节程序启动,应该是
int main(void) { /* ... */ }
或
int main(int argc, char *argv[]) { /* ... */ }
所以让它像
int main(int argc, char *argv[]) {
/*some_code */
}
接下来,要在命令行中使用fopen()
打开文件,
token = fopen(&inputFile, "r");
完全错误,因为fopen()
返回FILE*
而不是char*
的参数,而您提供给fopen()
的参数也是错误的。然后阅读C Standard的手册页,上面写着
FILE *fopen(const char *path, const char *mode);
示例代码
int main(int argc, char *argv[]) {
if( argc!= 3 ) { /*if user input is not correct, inform user */
printf("./transform inputfile outputfile \n");
return 0;
}
FILE *fp = fopen(argv[1],"r);
if(fp == NULL) {
/* error handling */
return 0;
}
/* do_stuff_with_fp */
}