Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2011, 17:33   #1
Ciberal
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 33
По умолчанию вылет программы при выводе простого числа (cout)

Пишу на Dev-cpp простенькую программку, для практики.
программу условно разбил на 3 части, первые 2 - загрузка информации из текстовых файлов и доработка по мелочи, а 3-я часть поиск, но это не это важно, а важно то, что, я например пишу
int i = 0;
cout<<i;
Если это кусочек текста находится до или в последнем цикле моей программы, то всё работает, но как только я пишу аналогичный код после последнего цикла, то программа виснет, и вылетает. Почему так? Что может влиять на это? Никогда не сталкивался с подобным. Я в ступоре.

Кусочек кода:
...
cout<<i2 // <- это работает нормально
} // скобка которая закрывает цикл
/////3333//// условно обозначил третью часть программы
int ura;
ura=0;
cout<<ura; // <- это не работает, консоль вылает не вывдя ничего
cout<<"hi!"// <- а вот такое заработает, ественно, если
//выше написанную
//строчку убрать.
Ciberal вне форума Ответить с цитированием
Старый 26.09.2011, 20:49   #2
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Давайте полный код своей программы
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 26.09.2011, 21:20   #3
Ciberal
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 33
По умолчанию

#include <iostream>
#include <fstream>
#include <windows.h>
#include <string>
#include <cstdlib>
#include <conio.h>

using namespace std;

int main(int argc, char *argv[])
{
string crit;
string file;
string h="none";
ifstream conf;
ifstream conf0;
conf0.open("config.cfg");
int i=0;
while(!conf0.eof())
{
getline(conf0,h);
i++;
}
cout<<i<<endl;
string *param;
param = new string[2*i];
int k=0;
conf.open("config.cfg");
while(!conf.eof())
{
int s=0;
getline(conf,h);
char *data1;
data1 = new char[250];
char *data2;
data2 = new char[250];
while((h[s]!='='))
{
data1[s]=h[s];
s++;
}
data1[s]='\0';
param[k]=data1;
cout<<param[k]<<"\n";
k++;
s++;
int s2=0;
while (h[s]!=NULL)
{
data2[s2]=h[s];
s++;s2++;
}
data2[s2]='\0'; /////// если что, убрать
param[k]=data2;
cout<<param[k]<<"\n";
k++;
}
///////2222////////
ifstream mail;
mail.open("test.eml");
string line;
int i2=0;
while(!mail.eof())
{
getline(mail,line);
i2++;
if (line.length()==0) break;
}
cout<<i2<<endl;
string *lines;
lines = new string[i2];
i2=0;
mail.seekg(ios::beg);
int d=0;
cout<<i2;
while(!mail.eof())
{
getline(mail,lines[i2]);
if ((lines[i2][0]==' ')&&(i2!=0))
{
string st=lines[i2];
string st2;
char t=' ';
int y=0;
int y2=0;
while(t!=NULL)
{
t=st[y];
if (t==' ') {y++;continue;}
st2[y2]=st[y];
y2++;
y++;
}
lines[d].append(st2.c_str());
lines[i2]='\0';

}
else d=i2;
if (lines[i2].length()==0) break;
i2++;

cout<<i2 // <- это работает нормально
}
/////3333////
int ura;

ura=0;
cout<<ura; // <- это не работает, консоль вылает не вывдя ничего
cout<<"hi!"// <- а вот такое заработает, ественно, если вышенаписанную
//строчку убрать.



system("PAUSE");
return EXIT_SUCCESS;
}
Ciberal вне форума Ответить с цитированием
Старый 26.09.2011, 22:14   #4
Ciberal
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 33
По умолчанию

проблемы с выводом, оказалось, начинаются еще при последних итерациях последнего цикла
Ciberal вне форума Ответить с цитированием
Старый 27.09.2011, 01:10   #5
Ciberal
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 33
По умолчанию

Скомпилировал в Code::Blocks, те же проблемы, хотя вылезли они чуть позже по итерациям цикла.
Ciberal вне форума Ответить с цитированием
Старый 27.09.2011, 01:29   #6
Ciberal
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 33
По умолчанию

проблема решена, если кому интересно:

Снес вот этот цикл
while(t!=NULL)
{
t=st[y];
if (t==' ') {y++;continue;}
st2[y2]=st[y];
y2++;
y++;
}

Он по смыслу программы оказался не нужен (отсекание лишних пробелов) да и к тому же он кривовато написан. В общем, теперь работает!
Ciberal вне форума Ответить с цитированием
Старый 27.09.2011, 01:34   #7
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

а память очищать кто будет?
counter вне форума Ответить с цитированием
Старый 27.09.2011, 01:51   #8
Ciberal
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 33
По умолчанию

с памятью тоже уже разобрался, пока искал ошибку
Ciberal вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
паскаль. нахождение простого числа Кинива Паскаль, Turbo Pascal, PascalABC.NET 3 09.06.2010 22:54
Вылет программы после завершение kloffelin Общие вопросы C/C++ 3 17.04.2010 20:18
граница проверки простого числа fs444 Общие вопросы C/C++ 4 24.03.2010 20:11
Вывод float числа в поток cout IgorKr Общие вопросы C/C++ 7 30.05.2008 01:21