Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка сегментации при открытии файла, Никак не могу победить 
:(
    Опции темы
Veroonya
Дата 23.5.2011, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 10.10.2008
Где: Россия, Омск

Репутация: нет
Всего: 1



Ошибка сегментации при прохлждении через выделенную строку. Что я делаю не так ?

Код

void printFile(int n) {
     int n2, n16, nn, dec;
     
     FILE *file = fopen( "1.txt", "wt" );   //Так же пробовала просто "w"
     int i;
     for (i = 1;i<=25;i++) {
         n2 = 0;
         dec = i;
         int j;
         for(j=0; dec>0; j++){

         int b = dec % 2; 
                n2 = n2+ b*exp(j*log(10));
                dec = (dec-b)/2;          
         }
         dec = i;
         n16=0;
         for(j=0; dec>0; j++){
                int val;
                val = dec%16;
                n16 = n16+ val*pow(10,j);
                val = (dec/16);
                dec = val;            
         }
         dec = i;
         nn=0;
         for(j=0; dec>0; j++){
                int val = (dec%n);
                nn = nn+ val*pow(10,j);
                val = (dec/n);
                dec = val;            
         }
    
    fprintf(file,"%i\t%i\t%i\t%i\n",i,n2,n16,nn);
   
    } 
    printf("File: 1.txt\n");    
     return;
}

int main()
{
printFile(10);
getch();
}

PM MAIL ICQ   Вверх
Riviero
Дата 23.5.2011, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 25.3.2010

Репутация: нет
Всего: 3



Скорее всего путь содержит русские буквы, на это и ругается.

Это сообщение отредактировал(а) Riviero - 23.5.2011, 14:05
PM MAIL   Вверх
Veroonya
Дата 23.5.2011, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 10.10.2008
Где: Россия, Омск

Репутация: нет
Всего: 1



Путь вполне себе из английских букв:  D:\si\1.txt

Это сообщение отредактировал(а) Veroonya - 23.5.2011, 14:32
PM MAIL ICQ   Вверх
Riviero
Дата 23.5.2011, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 25.3.2010

Репутация: нет
Всего: 3



Цитата(Veroonya @  23.5.2011,  14:07 Найти цитируемый пост)
Путь вполне себе из английских букв:  D:\si\1.txt


а exe-файл в этой же папке?
PM MAIL   Вверх
Veroonya
Дата 23.5.2011, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 10.10.2008
Где: Россия, Омск

Репутация: нет
Всего: 1



да, конечно. Все в кучу в этой папке. Файл был создан заранее. Проверен вариант когда файл заранее не создан. 
PM MAIL ICQ   Вверх
borisbn
Дата 23.5.2011, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(Veroonya @  23.5.2011,  13:50 Найти цитируемый пост)
FILE *file = fopen( "1.txt", "wt" );

На такой строчке "падать" не может. Никак.
Кстати, поставь обязательно проверку, чтоб файл открыт:
Код

FILE *file = fopen( "1.txt", "wt" );
if ( file == 0 ) {
    printf( "File not opened!\n" );
    return;
}


Добавлено через 2 минуты и 20 секунд
Взял твою программу один в один, скомпилировал, запустил - всё ОК. Ничего не вылетает...


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Veroonya
Дата 23.5.2011, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 10.10.2008
Где: Россия, Омск

Репутация: нет
Всего: 1



Падал после этой строчки
Код

FILE *file = fopen( "1.txt", "wt" ); 

видать был в шоке что файла нет. При проверке на открытие пишет что файл не найден. Но он там есть ! :(


При пошаговом прохождении дебагером все равно выдает ошибку сегментации и идет дальше, пишет что файл  не открыт.

Это сообщение отредактировал(а) Veroonya - 23.5.2011, 15:05
PM MAIL ICQ   Вверх
borisbn
Дата 23.5.2011, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(Veroonya @  23.5.2011,  15:00 Найти цитируемый пост)
При проверке на открытие пишет что файл не найден. Но он там есть !

1. Он (файл) может быть занят другим приложением (чтобы проверить попытайся удалить его руками из эксплорера).
2. У тебя может не быть прав на его открытие/созданиею
3. Если у тебя Windows 7, то может работать параноик UAC


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
alexvs11
Дата 23.5.2011, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: 2
Всего: 10



1. Что есть вообще "wt"?
2. Точно debug стоит, просто если release, то отладчик часто не может адекватно отлавливать местоположение процессора

Добавлено через 2 минуты и 46 секунд
в связи с оптимизацией и отсутствием символов
PM MAIL   Вверх
borisbn
Дата 23.5.2011, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(alexvs11 @  23.5.2011,  16:10 Найти цитируемый пост)
Что есть вообще "wt"

http://cplusplus.com/reference/clibrary/cstdio/fopen/


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
alexvs11
Дата 23.5.2011, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: 2
Всего: 10



а, первый раз вижу, ну разницы то никакой - зачем тогда писать
PM MAIL   Вверх
volatile
Дата 24.5.2011, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(Veroonya @  23.5.2011,  15:00 Найти цитируемый пост)
FILE *file = fopen( "1.txt", "wt" ); 
видать был в шоке что файла нет. При проверке на открытие пишет что файл не найден. Но он там есть ! :(

Где он есть?
FILE *file = fopen( "1.txt", "wt" ); открывает файл "1.txt" в текущем каталоге.
Вы не пробовали задасться вопросом, какой каталог является текущим для программы запущенной из под дебагера?

Цитата(Veroonya @  23.5.2011,  14:07 Найти цитируемый пост)
Путь вполне себе из английских букв:  D:\si\1.txt

Вот так и пишите:
FILE *file = fopen( "D:\\si\\1.txt", "wt" );



Это сообщение отредактировал(а) volatile - 24.5.2011, 00:36
PM MAIL   Вверх
Veroonya
Дата 24.5.2011, 05:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 10.10.2008
Где: Россия, Омск

Репутация: нет
Всего: 1



Цитата(volatile @ 24.5.2011,  00:33)
Цитата(Veroonya @  23.5.2011,  15:00 Найти цитируемый пост)
FILE *file = fopen( "1.txt", "wt" ); 
видать был в шоке что файла нет. При проверке на открытие пишет что файл не найден. Но он там есть ! :(

Где он есть?
FILE *file = fopen( "1.txt", "wt" ); открывает файл "1.txt" в текущем каталоге.
Вы не пробовали задасться вопросом, какой каталог является текущим для программы запущенной из под дебагера?

Цитата(Veroonya @  23.5.2011,  14:07 Найти цитируемый пост)
Путь вполне себе из английских букв:  D:\si\1.txt

Вот так и пишите:
FILE *file = fopen( "D:\\si\\1.txt", "wt" );

1. Когда программа была на С++ данное выражение работало корректно без полного пути, с текущим каталогом, в котором исходник и куда соответсвенно компилируется exe
После переименования файла из *.cpp  в *.c и заменения все выражений на чистый Си работает все кроме файла.

2. Написание полного пути - пробовала именно так как вы написали - не помогло.

По поводу wt или w - какая разница как написано если ни так ни так не работает.

ФАЙЛ НИЧЕМ НЕ ОТКРЫТ, он легко удаляется и можно создать снова.

Это сообщение отредактировал(а) Veroonya - 24.5.2011, 05:15
PM MAIL ICQ   Вверх
appo
Дата 25.5.2011, 04:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 22.5.2011

Репутация: нет
Всего: нет



Цитата

После переименования файла из *.cpp  в *.c и заменения все выражений на чистый Си работает все кроме файла.


Прошу прощения, а <stdio.h> подключен был?
PM MAIL   Вверх
bsa
Дата 25.5.2011, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(appo @  25.5.2011,  04:55 Найти цитируемый пост)
Прошу прощения, а <stdio.h> подключен был? 

если бы не был, то не скомпилировалось бы.

Добавлено через 3 минуты и 12 секунд
А кстати, что за ошибка сегментации в Windows? Под виндой, обычно, Access Violation.
Проверь еще имя файла - может это I.txt, l.txt или 1.txt.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0702 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.