merlin3000
Power Member
Boas.. Estou a ter um problema com este código e não consigo dar com o erro.
A funçao recebe uma string1 e devolve um apontador para string2 com a primeira e a ultima palavra de string1.
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
char * nm_prul(char *nome)
{
char *temp = new char[sizeof(nome)];
char *posi, *posf;
strcpy(temp,nome);
posi=strchr(temp,' ');
posf=strrchr(temp,' ');
if (posi && (posi!=posf))
{
*posi='\0';
strcat(temp,posf);
}
return temp;
}
main()
{
char temp[]={"primeiro meio ultimo"};
cout<<nm_prul(temp);
system("PAUSE");
}
O programa pode correr bem como chegar a função e fazer exit (acontece normalmente no bloodshed dev). Se for feito um debug passo a passo funciona sempre bem até ao fim (tanto no dev como no vc++) mas no vc++ mesmo ao terminar o main dá "First-chance exception in teste.exe: 0xC0000005: Access Violation".
Alguém me pode explicar porquê? Obrigado..
Caso o programa não acuse erro nenhum tentem por mais uns quantos "cout<<nm_prul(temp);" a seguir ao primeiro.
A funçao recebe uma string1 e devolve um apontador para string2 com a primeira e a ultima palavra de string1.
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
char * nm_prul(char *nome)
{
char *temp = new char[sizeof(nome)];
char *posi, *posf;
strcpy(temp,nome);
posi=strchr(temp,' ');
posf=strrchr(temp,' ');
if (posi && (posi!=posf))
{
*posi='\0';
strcat(temp,posf);
}
return temp;
}
main()
{
char temp[]={"primeiro meio ultimo"};
cout<<nm_prul(temp);
system("PAUSE");
}
O programa pode correr bem como chegar a função e fazer exit (acontece normalmente no bloodshed dev). Se for feito um debug passo a passo funciona sempre bem até ao fim (tanto no dev como no vc++) mas no vc++ mesmo ao terminar o main dá "First-chance exception in teste.exe: 0xC0000005: Access Violation".
Alguém me pode explicar porquê? Obrigado..
Caso o programa não acuse erro nenhum tentem por mais uns quantos "cout<<nm_prul(temp);" a seguir ao primeiro.