Показать сообщение отдельно
  #53  
Старый 21.04.2011, 15:55
Аватар для Gligarr
Мастер слова
 
Регистрация: 05.01.2008
Сообщений: 1,435
Репутация: 519 [+/-]
Цитата:
Сообщение от Waterplz Посмотреть сообщение
 while(!feof(tf)) 
    { 
     printf("\n %3d Name %20s with %2d items has % 6.2f kilo of luggage \n",i,t1.name,t1.number,t1.we ight); 
     fread(&t1,sizeof(t1),1,tf); 
     i++; //должен использоваться для перемешения указателя tf  скачками длиной в t1
    } 
Об этом поподробнее, пожалуйста, ведь по сути операция должна выполнятся верно...

Цитата:
Сообщение от SpellCaster Посмотреть сообщение
Да, и как она вылетает-то? Вроде как должно быть некое сообщение об ошибке.
Программа сперва зависает, а потом Windows выдает сообщение о том, что программа не отвечает и т.д. и т.п.
А вот с отладкой до сих пор не могу разобраться - использую Dev-C++, а отладчик там какой-то непонятный. Вроде пробегаю по строкам, но вот ничего толком он не выдает...

Так, решил проверить первую функции отдельно:

Скрытый текст - Открытие файла для записи:
[PHP]#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<string.h>
main()
{
struct luggage {char name[20]; int number; float weight;}t1;
char ch;
FILE *tf;
tf=fopen("lug.dat", "wb");
printf("\n Entering data \n");
do
{
printf("\n Surname: \n");
scanf("%s",t1.name);
printf("\n Number of items: \n");
scanf("%d",t1.number);
printf("\n The total weight of luggage: \n");
scanf("%f",t1.weight);
fwrite(&t1,sizeof(t1),1,tf);
printf("\n Finish? y/n ");
ch=getch();
}
while(ch!='y');
fclose(tf);
return 0;
}
[/PHP]


Вылетает уже после ввода веса багажа (Weight), причем во время отладки выдает ошибку "Ваша программа вызвала нарушение доступа (ошибка сегментации)". Подозреваю баг связан со строчкой fwrite(&t1,sizeof(t1),1,tf);
__________________
Ты неисчерпаем, и на диво трудолюбив© Franka
Королевский ГИГААА-ДРРРЕЕЕЛЬ-УДАААААР!!!
Блог Харухиста

Последний раз редактировалось Gligarr; 21.04.2011 в 16:12.
Ответить с цитированием