Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > вылетает ошибка при компиляция EAccessViolantion


Автор: fxzuz 17.5.2006, 06:18
такая проблема в borland c этот исходник прекрасно работает, а вот в C++ Builder ведёт себя не так. 
Когда компилю ошибок нету но вылетает Debuger после чего вылетает EAccessViolantion и указывает на строку      pre_str[j]=stroka[i];

Заранее большое спасибо (-:

Код

#include <stdio.h>
#include <conio.h>
#include <fstream.h>
#include <string.h>
#include <malloc.h>

char * strez(int per, int pos,char *stroka)
{
  char *pre_str;
  int j=0;

  for(int i=per;i<pos;i++)
  {
    pre_str[j]=stroka[i];
    j++;
  }
  pre_str[j]='\0';
  return(pre_str);
}

main()
{
 clrscr();
 char ** m;

 m = (char **) malloc( 50 * sizeof( char* ));

 ifstream FILE1;
 FILE1.open("1.txt");
 int i=0;
 while (!FILE1.eof())
 {
   m[i] = (char *) malloc( 50 * sizeof(char));
   FILE1.getline(m[i],50);

//   int per1=0;

   for(int j=0;j<strlen(m[i]);j++)
   {
      char *dd;
      if (m[i][j]=='#')
      {
        strcpy(dd,strez(0,j,m[i]));
    printf("%s |",dd);
        break;
//    per1=j+1;
      }
   }
   printf("\n");
   i++;
 }

FILE1.close();
getch();
return 0;
}
 

Автор: Artemon 17.5.2006, 07:10
Естественно, вылетает, ведь ты пытаешься присвоить значение - НЕСУЩЕСТВУЮЩЕЙ ОБЛАСТИ ПАМЯТИ.
Цитата

pre_str[j]=stroka[i];


Выдели память под pre_str.
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)