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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Программа не работает в отладке. 
V
    Опции темы
Xon
Дата 15.3.2009, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Изучаю Си. 
Мной создан консольный проект С++ в VS6.
Код компилируется без ошибок но при запуске в отладке вылетает сообщение

Debug Assertion failed!
Program:D:\0\___Debug\1.exe
File:fgets.c
Line:60
Expression:str !=NULL

А практически происходит то что fopen возвращает нули
Это в отладке 
а просто запустить прогу из директории то она удачно отрабатывает.

Не могу понять  как вообще запускается программа на исполнение из под VS6.
И как мне её поиметь в отладчике??


Код

/*Программа должна иметь небольшой файл 121.c     
с любым содержимым но строки не должны превышать 199 символов
в той директории где она находится 
программа создаст новый файл в своей директории z.c
и перепишет в него содержимое 121.c  сдвинув его впрао символом табуляции.
*/




#include<stdlib.h>
#include <stdio.h> 
#define BSIZE 200 //задаём СИМВОЛИЧЕСКУЮ переменную которую должен обработать препроцессор\
//она нужна для того чтобы не выставлять каждый раз цифру 200 а вместо нее напишем  BSIZE   \
//и если надо будет сменить цифру по всей программе то мы её просто сменим тут.
int main()

char buf[BSIZE]; //создаём обычный статический массив на 200 элементов
FILE *in, *out;  //обьявляем указатели на файлы
 
in=fopen("121.c","rb");// откроем сущесвующий файл для чтения из него
out=fopen("z.c","wb"); // создадим и откроем новый файл для записи в него


buf[0]='\t';           // впишем в нулевой элемент символ табуляции он всё время будет там 
                       //и сдвинет все строки влево в файле записи

while(fgets(buf+1,BSIZE-1,in) != NULL)// в цикле переписываем из одного файла в другой
fputs(buf,out); //
fclose(in); //
fclose(out); //
system("PAUSE");  //не дадим закрыться окну
return 0; 




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


Опытный
**


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

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



файлов нет там где она ищет, вот и не работает.
Рабочие каталоги могут отличаться при запуске программы из студии и из консоли.


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
zim22
Дата 15.3.2009, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



 smile 
Xon, комментарии у тебя в программе - жесть!

Код

int x = 0; // создаём целочисленную переменную с именем икс, инициализированную нулём.
int y = x; // создаём целочисленную переменную y, инициализируя её значением икс. после инициализации переменная y будет содержать значение икс.
int *s = new int(10); // создаём обычный указатель по имени ЭС, которому будет передан адрес из динамической памяти, возвращённый оператором new.




--------------------
PM MAIL   Вверх
andrew_121
Дата 15.3.2009, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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



zim22,  smile  smile 


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Xon
Дата 16.3.2009, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да... Похоже что нет сдесь программистов 
писавших программы работающие с файлами...
Или они в отладчике не работают?...
PM MAIL   Вверх
C/L
Дата 16.3.2009, 01:55 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Xon @  16.3.2009,  02:31 Найти цитируемый пост)
Да... Похоже что нет сдесь программистов писавших программы работающие с файлами...

 smile  smile 

вот же ответ:

Цитата(pan2004 @  15.3.2009,  02:14 Найти цитируемый пост)
файлов нет там где она ищет, вот и не работает.Рабочие каталоги могут отличаться при запуске программы из студии и из консоли.


Это сообщение отредактировал(а) C/L - 16.3.2009, 02:00
PM MAIL WWW ICQ   Вверх
Xon
Дата 16.3.2009, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А вот вопрос:

Цитата

Не могу понять  как вообще запускается программа на исполнение из под VS6.
И как мне её поиметь в отладчике??


Если не в состоянии ответить то хотя бы пошлите куда нибудь
или напишите пример который непременно будет работать в отладке
то что прога в отладке не находит файла так это я с самого начала знал

Цитата

А практически происходит то что fopen возвращает нули
Это в отладке 
а просто запустить прогу из директории то она удачно отрабатывает

для тех кто внимательно читал вопрос.
PM MAIL   Вверх
mes
Дата 16.3.2009, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(Xon @  15.3.2009,  23:31 Найти цитируемый пост)
Да... Похоже что нет сдесь программистов 
писавших программы работающие с файлами...

Ага, Вы единственный !

Цитата(Xon @  16.3.2009,  09:18 Найти цитируемый пост)
для тех кто внимательно читал вопрос. 

для тех кто невнимательно читал ответ, процитирую eще раз:

Цитата(C/L @  16.3.2009,  00:55 Найти цитируемый пост)

Цитата(pan2004 @  14.3.2009,  23:14 Найти цитируемый пост)
файлов нет там где она ищет, вот и не работает.
Рабочие каталоги могут отличаться при запуске программы из студии и из консоли



Цитата(Xon @  16.3.2009,  09:18 Найти цитируемый пост)
Если не в состоянии ответить то хотя бы пошлите куда нибудь

Если кто не в состоянии понять, уточню: надо задать рабочий каталог, тот в котором у Вас созданы файлы.

P.S. если хотите, чтоб к Вам относились с уважением, старайтесь вести себя достойно, а не вызывающе грубить.

Это сообщение отредактировал(а) mes - 16.3.2009, 10:43


--------------------
PM MAIL WWW   Вверх
Anikmar
Дата 16.3.2009, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Xon @  16.3.2009,  10:18 Найти цитируемый пост)
Если не в состоянии ответить то хотя бы пошлите куда нибудь

Будете грубить - точно пошлют  smile 

Как вариант - чтобы работало и в релизе и в отладчике при открытии файлов задайте им какой-нибудь абсалютный путь, например:
c:\111\Test.txt



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


depict1
****


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

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



Цитата(Anikmar @  16.3.2009,  10:51 Найти цитируемый пост)
задайте им какой-нибудь абсалютный пут

или функцию main описать так:
Код

int main(int argc, char *argv[])

и потом указывать имя файла непосредственно из командной строки.


--------------------
PM MAIL   Вверх
Anikmar
Дата 16.3.2009, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата

или функцию main описать так:
код C++
1:
int main(int argc, char *argv[])

и потом указывать имя файла непосредственно из командной строки. 


Ага, а потом автор темы скажет, что здесь нет программистов, которые умеют работать с командной строкой.
Ему же придется параметры в среде прописывать  smile 
PM MAIL ICQ   Вверх
zim22
Дата 16.3.2009, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



 smile 
Цитата(Anikmar @  16.3.2009,  11:24 Найти цитируемый пост)
Ему же придется параметры в среде прописывать

А что такое среда? А что такое консоль? А где я нахожусь? Вокруг нету ни одного программиста... Одни люди в белых халатах. Они точно не программисты. Сейчас подойду и спрошу у них, умеют ли они дебажить в нулевом кольце! Аййййй, не засовывайте мне эти таблетки в рот! Не колите меня этими уколами. Я Форумчанин! Не имеете права!  smile 


--------------------
PM MAIL   Вверх
Xon
  Дата 16.3.2009, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Кстати с принудительно прописанным путём таже беда

наверное проблема с настройкам VS а может ещё что нибудь
Мне уже неудобно просить кого нибудь утруждать себя
прокрутить это код у себя в VS .


Спасибо всем весёлым и злобным кто попытался помочь 

прошу тему считать  закрытой
PM MAIL   Вверх
zim22
Дата 16.3.2009, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



Xon, добавь эту строчку в программу и потом кинь файл 121.с в ту же директорию
Код

printf("%s\n", __FILE__);


Это сообщение отредактировал(а) zim22 - 16.3.2009, 12:32


--------------------
PM MAIL   Вверх
Dmi3ev
Дата 16.3.2009, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



 smile 
Цитата

#define BSIZE 200 //задаём СИМВОЛИЧЕСКУЮ переменную которую должен обработать препроцессор\
//она нужна для того чтобы не выставлять каждый раз цифру 200 а вместо нее напишем  BSIZE   \
//и если надо будет сменить цифру по всей программе то мы её просто сменим тут.

я себе это скопировал на память после того, как оборжался...  smile 
Цитата

fputs(buf,out); //
fclose(in); //
fclose(out); //

муза покинула, решил пропустить...  smile правильно, спешить не надо, надо найти нужные слова, 
чтобы кратко и понятно (как в случае с #define BSIZE 200) описать суть данных строк... полностью согласен...  smile 
муза вернулась   smile 
Цитата

system("PAUSE");  //не дадим закрыться окну

PS
Цитата

buf[0]='\t';           // впишем в нулевой элемент символ табуляции он всё время будет там 
                       //и сдвинет все строки влево в файле записи

это тоже корка...  smile 

Это сообщение отредактировал(а) Dmi3ev - 16.3.2009, 13:21


--------------------

PM MAIL   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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