Błąd w odczycie z pliku (Visual Studio)

0

Mam taką funkcję:

int PobierzNumerSerwera(void)
{
int bytesSent;
int bytesRecv = SOCKET_ERROR;

/Pobieranie rozmiaru pliku z informacjami
wysyłanymi do serwerwa i stworzenie dynamicznej
tablicy znaków
/

char *FileName="login.txt";
struct stat results;
stat(FileName, &results);
int FileSize=results.st_size;
FILE *plik=fopen(FileName,"r+b");
char *informacje=new char[FileSize];

int i=0;
while(feof(plik)==0)
{
fscanf(plik,"%c",informacje+i);
i++;
}
fclose(plik);
informacje[i]=0;

//tworzymy buffor do którego zapisujemy otrzymane dane

char buffor[2000];
for(int m=0;m<2000;m++)
buffor[m]=0;

//tworzymy gniazdo

m_socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
if ( m_socket == INVALID_SOCKET )
{
WSACleanup();
return -1;
}

//pobieramy numer IP z hosta i łączymy się z serwerem

struct hostent he;
he=gethostbyname("appmsg.gadu-gadu.pl");
sockaddr_in clientService;
clientService.sin_family = AF_INET;
clientService.sin_addr.s_addr = inet_addr(inet_ntoa(
((struct in_addr*)he->h_addr)));
clientService.sin_port = htons(80);
if ( connect( m_socket, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR)
{
WSACleanup();
return -2;
}

//wysyłamy pakiet z informacjami

bytesSent=send(m_socket,informacje,FileSize,0);
if(bytesSent==-1)
return -3;
delete[] informacje;

//pobieramy odpowiedź ze serwera

do
{
bytesRecv = recv( m_socket,(char*)&buffor,sizeof(buffor), 0 );
if ( bytesRecv <1 )
return -4;
}
while( bytesRecv == SOCKET_ERROR );
if(buffor=="notoperating")
return -5;

//zczytujemy numer IP i port

int k,l,j;
for(j=0; j<200; j++)
{
if(buffor[j]==58 )
break;
}
for(k=j;k<200;k++)
{
SerwerPortNumber[k-j]=buffor[k];
if(buffor[k]==32)
break;
}
SerwerPortNumber[5]=0;
for(l=k;l<k+13;l++)
{
SerwerIpNumber[l-k]=buffor[l+1];
if(buffor[k]==32)
break;
}
SerwerIpNumber[13]=0;
return 1;

i w niej jest jakiś błąd, bo gdy dołącze ją do reszty programu to mi najpierw skompiluje, ale później gdy chcę użyć tej funkcji wyskakuje błąd: Cytat:

Debug error!
Program:..tutaj scieżka pliku exe

DAMEGE: after normal block (#79) at 0x00386A50

(press retry to debug the application)

O co w tym chodzi? Bo ta funkcja w devie np działa.</quote>

0

O co w tym chodzi? Bo ta funkcja w devie np działa.

To, że w devie działa nie znaczy, że funkcja jest poprawna.

Chyba tu jest przyczyna:

char *informacje=new char[FileSize];

int i=0;
	
while(feof(plik)==0)
{
	fscanf(plik,"%c",informacje+i);
	i++;
}
	
fclose(plik);
informacje[i]=0; //<------ !!!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1