重新分配更改的指针引用

GSc*_*iti -1 c pointers reference

我在使用fileContent变量的代码中遇到了麻烦.我希望fileReader重新分配所做的更改在我的主要工作正常,但它不起作用..

void fileReader(char *fileName, char *fileContent){
    FILE *inputFile = fopen(fileName, "r");

    int fileLength = 0;
    int endFlag = fgetc(inputFile);

    while(endFlag != EOF){
        fileContent = (char *) realloc (fileContent, (fileLength + 1) * sizeof(char));
        fileContent[fileLength] = endFlag;
        endFlag = fgetc(inputFile);

        fileLength++;
    }
}

int main(int argc, char const *argv[]){
    char *fileName = (char *) malloc (sizeof(char));
    char *taskStack = (char *) malloc (sizeof(char));
    char *fileContent = NULL;

    inputReader(fileName, taskStack);
    fileReader(fileName, fileContent);


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

per*_*eal 6

通过char重新分配char是浪费性能,而你可以考虑使用合理大小的块.无论如何,传递一个指向fileContent的指针:

void fileReader(char *fileName, char **fileContent){
   /* ... */
   fileContent[0] = (char *) realloc (fileContent[0], 
          (fileLength + 1) * sizeof(char));
Run Code Online (Sandbox Code Playgroud)

并在main:

fileReader(fileName, &fileContent);
Run Code Online (Sandbox Code Playgroud)

以便在函数外部可以看到对指针的更新.