我在使用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;
}
答案 0 :(得分:6)
通过char重新分配char是浪费性能,相反,您可以考虑使用合理大小的块。无论如何,传递一个指向fileContent:
的指针void fileReader(char *fileName, char **fileContent){
/* ... */
fileContent[0] = (char *) realloc (fileContent[0],
(fileLength + 1) * sizeof(char));
和main
:
fileReader(fileName, &fileContent);
以便在函数外部可以看到对指针的更新。