gpt4 book ai didi

c - 从命令行传入文件名来读取文件内容

转载 作者:行者123 更新时间:2023-11-30 20:31:11 25 4
gpt4 key购买 nike

我有一个函数./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 文本保存到用户定义的输出文件中。

最佳答案

您尝试的代码存在一些问题,首先是这里

void main(FILE *inputFile, FILE *outputFile){ }

您正在尝试更改不正确的 main() 原型(prototype)。根据C Standard 第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()的参数 也错了。然后阅读 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 */
}

关于c - 从命令行传入文件名来读取文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52350077/

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