This question already has answers here: How to change value of variable passed as argument?                                                                    (4个答案)                                                                                        2年前关闭。                                我想创建一个打开文件的功能,然后其他功能使用此打开的文件。这是我的代码#include <stdio.h>int openFile(FILE* inputFile){ inputFile = fopen("input.txt", "r"); if (inputFile != NULL) return 0; else return -1;}void readWholeFile(FILE* inputFile){ char str[20]; while (feof(inputFile)) { fscanf(inputFile, str); printf("%s\n", str); }}int main() { FILE* inputFile; if (openFile(inputFile) == 0) { readWholeFile(inputFile); } else printf("File didn't open"); fclose(inputFile); return 0;}未打印“文件未打开”,因此应打开文件,但实际上readWholeFile不打印任何内容,因为文件为空。有什么问题? 最佳答案 您的原型没有意义,openFile()不能通过值传递来更改调用方的FILE *,在这种情况下,您需要传递指针的地址:int openFile(FILE **inputFile){ *inputFile = fopen("input.txt", "rt"); return *inputFile == NULL ? -1 : 0;}但这当然没有什么用,只需直接在要打开文件的位置使用fopen()即可。将指针返回打开的文件更容易使用,而不必管理一个单独的int,该int不携带任何增值或信息(NULL为0或-1并不比指针为还是NULL)。关于c - 如何创建打开文件的功能,让其他功能使用它们? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47548244/
10-11 21:12