Вызов файловой системы C ++ 17 генерирует ошибку сегментации - PullRequest
1 голос
/ 02 июля 2019

Основываясь на ответе на Размер файла с использованием C ++ 17 , я написал следующую программу.Но когда исполняемый файл запускается, я получаю ошибку сегментации.Я использую g ++ 8.3.0 на iMac под управлением High Sierra.

// c17filesize.cpp
// Jul-02-2019

#include <cstring>
#include <filesystem>
using namespace std;

int main(int argc, char **argv)
{
    char filename[100];
    (argc > 1) ? strcpy(filename, argv[1]) : strcpy(filename, __FILE__);
    auto size = filesystem::file_size(filename);
}

Ответы [ 2 ]

4 голосов
/ 02 июля 2019
  1. Предпочитают использовать строку (и ее конструктор) над строками в стиле c.
  2. в соответствии https://en.cppreference.com/w/cpp/filesystem/file_size необходимо указать полный путь. Вы убедились, что argv [1] содержит полный путь?
  3. проверить файл существует, прежде чем пытаться прочитать его размер std :: filesystem :: exist (filename);

  4. используйте разделы try и catch для отлова исключения.

0 голосов
/ 08 июля 2019

Компиляция с gcc 9.1.0 прошла успешно без каких-либо проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...