@Artyom_Kopan

Как в C выделить динамическую память для текстового файла?

У меня есть функция:
FILE* openInputFile()
{
    printf("Enter the name of the input file: ");
    char* inputFileName;
    scanf("%s", &inputFileName);
    printf("%s", inputFileName);
    if (strstr(inputFileName, ".txt") == NULL)
        inputFileName = strcat(inputFileName, ".txt");
    printf("%s", inputFileName);
    FILE* inputFile = fopen(inputFileName, "r");
    return inputFile;
}

При её запуске программа падает в ошибкой SIGSEGV. Может быть, для этого файла нужно выделить динамическую память?
(Сейчас проверил, от размера файла это не зависит. В чём тогда может быть ошибка?)
  • Вопрос задан
  • 331 просмотр
Пригласить эксперта
Ответы на вопрос 1
CityCat4
@CityCat4 Куратор тега C
//COPY01 EXEC PGM=IEBGENER
char* inputFileName;

Было бы странно, если бы она не падала, поскольку сейчас inputFileName указывает куда-то в пространство.

Чайники обычно делают так:
char inputFileName[256];
и потом думают - как так, меня сломали?
кто поумнее делают так:
char *inputFileName;
inputFileName = (char *) calloc(256, 1);

(это конечно тоже не звездец - нужно учесть максимально допустимую длину пути и имени файла, но уже куда лучше)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы