Fopen Seg. неисправность. Имя файла: 10000000 Размер: 47M - PullRequest
0 голосов
/ 05 января 2012

первое спасибо за чтение вопроса.

У меня странный сегмент. Ошибка при попытке открыть файл, код прост:

f = fopen(itoa(SZ,10),"r");

SZ - это переменная, которую я установил во время компиляции, чтобы выбрать, какой файл я открываю (это программа для оптимизации алгоритма, и я пробую ее с проблемами с разными размерами). Отладка с помощью gdb показывает, что itoa работает нормально.

У меня нет проблем с другими файлами (вывод ls):

489  Jan  4 19:34 100
4.8K Jan  4 19:34 1000
48K  Jan  4 19:34 10000
478K Jan  4 19:34 100000
4.7M Jan  4 19:34 1000000
47M  Jan  4 19:34 10000000

есть идеи?

спасибо

P.D .: код Италии:

char *itoa(int val, int base) {

    static char buf[32] = {0};
    int i = 30;
    for(; val && i ; --i, val /= base)
        buf[i] = "0123456789abcdef"[val % base];
    return &buf[i+1];
}

1 Ответ

0 голосов
/ 06 января 2012

Поскольку вы прокомментировали, что fopen("10000000","r"); также не работает, я собираюсь выйти из строя и сказать, что fopen() терпит неудачу и возвращает NULL FILE*. Когда вы впоследствии используете этот файловый указатель, вы получаете ошибку сегмента.

fopen() может быть сбой из-за проблем с разрешениями, может быть - я не знаю.

Проверьте, успешно ли fopen(), и, если это не удалось, дамп errno.

...