Как динамически выделить память для чтения файла .txt с помощью функции strdup в C - PullRequest
0 голосов
/ 18 января 2020

У меня есть функция для динамического размещения и чтения .txt файла в C. Однако согласно моим инструкциям по назначению при чтении файла следует использовать strdup, а не mallo c для обработки динамического распределения памяти c. Я попытался поработать с функцией strdup, чтобы она заработала, но я пока не добился успеха. Вот текущий рабочий код, использующий mallo c. (ПРИМЕЧАНИЕ: для моего проекта я читаю 2 файла .txt, поэтому в основном их два. Поместите это, чтобы избежать путаницы.)

РЕДАКТИРОВАТЬ 1: использовать #include sys / stat.h для stat stat

РЕДАКТИРОВАТЬ 2: Поскольку многие люди спрашивают, я должен использовать strdup для динамического c выделения памяти. Я не буду показывать инструкции, но это явно требуется.

//Function that reads .txt input files
char* readInputFile(FILE* targetFile, struct stat stringBuffer)
{           
    char *tempString=malloc(stringBuffer.st_size+1);      
    fread(tempString, 1, stringBuffer.st_size, targetFile);     
    tempString[stringBuffer.st_size] = '\0';     
    fclose(targetFile);     
    return tempString;
}

int main(int argc, char *argv[])
{ 
    struct stat stringBuffer1; 
    struct stat stringBuffer2;
    stat(argv[1], &stringBuffer1); 
    stat(argv[2], &stringBuffer2); 
    FILE *wordListFile1 = NULL, *wordListFile2 = NULL, *outputFile = NULL; 
    wordListFile1=fopen(argv[1], "r");
    wordListFile2=fopen(argv[2], "r");
    char* fileString1;
    char* fileString2;
    fileString1 = readInputFile(wordListFile1,stringBuffer1);
    fileString2 = readInputFile(wordListFile2,stringBuffer2);
    ...
}
...