从命令行传入文件名以读取文件内容
Passing in filename from command line to read file content
我有一个函数 ./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 中的每个字符存储在字符数组中。我不确定如何正确地这样做。执行程序代码后(将 hex 和 int 值从文件转换为 ASCII),我需要将转换后的 ASCII 文本保存到用户定义的输出文件中。
您尝试的代码几乎没有问题,首先是这里
void main(FILE *inputFile, FILE *outputFile){ }
您正在尝试更改 main()
的原型,这是不正确的。根据C StandardSection 5.1.2.2.1 Program startup,要么就是
int main(void) { /* ... */ }
或
int main(int argc, char *argv[]) { /* ... */ }
所以让它像
int main(int argc, char *argv[]) {
/*some_code */
}
接下来,要从命令行使用 fopen()
打开文件,这个
token = fopen(&inputFile, "r");
是完全错误的,因为 FILE*
的 fopen()
returns 参数不是 char*
并且你提供给 fopen()
的参数也是错误的。然后阅读 fopen() 的手册页,它说
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 */
}
我有一个函数 ./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 中的每个字符存储在字符数组中。我不确定如何正确地这样做。执行程序代码后(将 hex 和 int 值从文件转换为 ASCII),我需要将转换后的 ASCII 文本保存到用户定义的输出文件中。
您尝试的代码几乎没有问题,首先是这里
void main(FILE *inputFile, FILE *outputFile){ }
您正在尝试更改 main()
的原型,这是不正确的。根据C StandardSection 5.1.2.2.1 Program startup,要么就是
int main(void) { /* ... */ }
或
int main(int argc, char *argv[]) { /* ... */ }
所以让它像
int main(int argc, char *argv[]) {
/*some_code */
}
接下来,要从命令行使用 fopen()
打开文件,这个
token = fopen(&inputFile, "r");
是完全错误的,因为 FILE*
的 fopen()
returns 参数不是 char*
并且你提供给 fopen()
的参数也是错误的。然后阅读 fopen() 的手册页,它说
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 */
}