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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2010, 23:31   #1
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию проблема с программой gtk

Кто-то просил описать проблему по-подробнее. Итак, имеем следующий код:

Код:
void OpenFile(char *filename)
{	
	GtkTextIter   *iter;
	gint i=0;
	gchar line[256];
	FILE *f;
	f=fopen(filename,"r");		//открываем файл
	
	while(!feof(f))
	{
	fgets(line,256,f);
	gtk_text_buffer_get_iter_at_line(buffer,iter,i);	//итер на строку с номером i
	gtk_text_buffer_insert(buffer, iter, line, -1);	//вставляем строку в позицию итера
	i++;					//увеличиваем счетчик строк
	}
	fclose(f);
	
}
1. Памяти я выделяю достаточно, при тестинге это все учитывается.
2. Точное знание проблемы это уже 50% ее решения
Проблема заключается в следующем, запускаю программу на исполнение, когда программа вызывает на выполнение эту процедуру, происходит падение программы, анализатор собирает данные об ошибке (см. вложение). По логике вещей(по крайней мере с моего места) все должно работать.
Вложения
Тип файла: txt notepad-bugreport.txt (7.6 Кб, 153 просмотров)
heart вне форума Ответить с цитированием
Старый 30.01.2010, 00:11   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Отладку пробовали?
Вести лог?
Проверять значения входных параметров?
Делать обработку исключений?
MaTBeu вне форума Ответить с цитированием
Старый 30.01.2010, 13:00   #3
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию Справился.

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

Код:
void OpenFile(char *filename)
{	
	GtkTextIter iter; FILE *f;
	gint i=0; gchar line[256];
	
	f=fopen(filename,"r");	//открываем файл
	
	while(!feof(f))
	{
	fgets(line,256,f);
	gtk_text_buffer_get_iter_at_line(buffer,&iter,i);	//итер на строку с номером i
	gtk_text_buffer_insert(buffer, &iter, line, -1);	//вставляем строку в позицию итера
	i++;					//увеличиваем счетчик строк
	}
	fclose(f);
	
}
Файл считывается, но почему-то последняя строка дублируется, вроде не должна. Получается цикл выполняется на 1 раз больше? Как подскажите как подправить.
heart вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с программой bboba Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 18.06.2009 19:50
Проблема с программой eks-s Общие вопросы Delphi 9 06.02.2008 09:47
проблема с программой dima00 Общие вопросы Delphi 2 20.11.2007 13:56
Проблема с программой Dues Помощь студентам 1 19.11.2007 01:46