Форум программистов, компьютерный форум CyberForum.ru

Почему программа падает? - C++

Восстановить пароль Регистрация
 
Prestige
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 6
26.11.2012, 22:06     Почему программа падает? #1
Знаю, что что-то с динамической памятью (правда, ещё грешу на функцию fscanf), но так и не придумал, как исправить...

Заголовочный файл (kassapp.h)
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef KASSAPP_H
#define KASSAPP_H
 
struct Tovar
{ 
  char* Name;
  char* EdIzm;
  int KolVo;
  int Price;
};
int Stoimost (int N, int P);
void Print(const Tovar*);
struct Check 
{
  int Sum;
  int Cash;
};
int Sdacha (int S, int C);
void PrintDateTime(); 
void Print(const Check*);    
#endif


Файл kassapp.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "kassapp.h"
#include <iostream>
#include <time.h>
using namespace std;
int Stoimost (int N, int P)
{ 
  return N*P; 
}
void Print(const Tovar* T)
{ 
  cout << T->Name << " " << T->KolVo << " " << T->EdIzm << " " << Stoimost(T->KolVo, T->Price) << " руб." << endl; 
}
int Sdacha(int S, int C)
{
  return C-S; 
}
void PrintDateTime()
{
  time_t t;
  tm * temp;
  time(&t);
  temp=localtime(&t);
  cout << temp->tm_mday << "." << temp->tm_mon + 1 << "." << temp->tm_year + 1900 << " " << temp->tm_hour << ":" << temp->tm_min << ":" << temp->tm_sec << endl;
}
void Print(const Check* C)
{
  cout << "Итого: " << C->Sum << endl;
  cout << "Наличные: " << C->Cash << endl;
  cout << "Сдача: " << Sdacha(C->Sum, C->Cash) << endl;
  PrintDateTime(); 
}


main.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "kassapp.h"
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
  char stroka[50];
  int count=0;
  FILE *f;
  if(argc!=2)
  {
    cout << "Wrong format!" << endl;
    return -1;
  }
  f=fopen(argv[1],"r");
  if(!f)
    return -2;
  Tovar* TArr;  
  while(fgets(stroka,50,f))
    {
      count++;
      const int size = count;
      TArr = new Tovar[size];
    }
  for(int i=0;i<count;i++)
    {
      TArr[i].Name=new char[10];
      TArr[i].EdIzm=new char[3];
      fscanf(f,"%s %s %d %d",TArr[i].Name,TArr[i].EdIzm,TArr[i].KolVo,TArr[i].Price);
    }  
  fclose(f);
  cout << TArr[0].Name << " " << TArr[1].EdIzm << " " << TArr[3].KolVo << " " << TArr[2].Price << endl;
  for(int i=0;i<count;i++)
    {
      delete[]TArr[i].Name;
      delete[]TArr[i].EdIzm;
    }
  delete[]TArr;
  _getch();
  return 0;  
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2012, 22:06     Почему программа падает?
Посмотрите здесь:

C++ Почему "падает" программа
C++ Программа падает при чтении из файлов
C++ Падает программа
C++ Почему падает программа?
C++ Почему программа "падает" на функции заполнения дерева?
C++ Падает программа при использовании DLL
Программа падает без printf C++
C++ Почему программа падает при сортировке массивов больших размерностей

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 13:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru