Página 1 de 1

Right & Left en C by linkgl

Publicado: 20 Dic 2010, 01:52
por linkgl
Viene con la opcion de dejar sNueva como variable local reservando espacio con malloc o hacerla global por si la ocupas en otras funciones restringiendo a 256 saludos!

Código: Seleccionar todo

/***********************
* Coder: Linkgl        *
* Funcion right        *
* Fecha 19/12/2010     *
* indetectables.net    *
* Revolutionteams.info *
***********************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char * Right(char *sCadena,int iPosicion);
//char sNueva[256]; <- Opcion 2
int main()
{
  printf("%s",Right("indetectables.net",6));
  getchar();
  return 0;
}

char * Right(char *sCadena,int iPosicion)
{
  int i;
  char *sNueva=malloc(strlen(sCadena))+iPosicion+1; //<- Opcion 1
  for(i=iPosicion-1;i<strlen(sCadena);i++)
  {
    sNueva[strlen(sNueva)]=sCadena[i];
  }
  return sNueva;
}
de una vez publico left ya que es muy parecido para ya tenre el juego completo de Mid(substr) Left y right para el manejo de strings sin apis

Código: Seleccionar todo

/***********************
* Coder: Linkgl        *
* Funcion Left         *
* Fecha 19/12/2010     *
* indetectables.net    *
* Revolutionteams.info *
***********************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char * Left(char *sCadena,int iPosicion);
char sNueva[256]; //<- Opcion 2
int main()
{
  printf("%s",Left("indetectables.net",6));
  getchar();
  return 0;
}

char * Left(char *sCadena,int iPosicion)
{
  int i;
  //char *sNueva=malloc(strlen(sCadena))+iPosicion+1; //<- Opcion 1
  for(i=0;i<iPosicion;i++)
  {
    sNueva[strlen(sNueva)]=sCadena[i];
  }
  return sNueva;
}

Re: Right & Left en C by linkgl

Publicado: 20 Dic 2010, 04:00
por MichBukana
eres un maquina codeando no a quien diga lo contrario bro no solo por este que posteas si no en general sigue asi

Salu2!

Re: Right & Left en C by linkgl

Publicado: 20 Dic 2010, 05:06
por ØnLy
Exelntes codigos como simpre , una cosita nada mas'...
linkgl escribió:char *sNueva=malloc(strlen(sCadena))+iPosicion+1; //<- Opcion 1
Cada ves que se reserva memoria("malloc()") , no deberias de liberarla("Free()") ?
Gracias por tus codigos bro!

Re: Right & Left en C by linkgl

Publicado: 20 Dic 2010, 05:28
por linkgl
Síp, debería pero es hasta que terminen de utilizar la variable sNueva en el programa creo.

Re: Right & Left en C by linkgl

Publicado: 20 Dic 2010, 10:50
por mDrinky
Se deberia de liberar la memoria para poder gestionarla mejor y que el programa en si funcionase mejor pero para tan poca cosa da igual.

salu2!

Re: Right & Left en C by linkgl

Publicado: 20 Dic 2010, 15:27
por p0is0n-123
Si,aunque no va a pasar nada por no liberarla,pero lo correcto es hacerlo.
Yo no tengo críticas,todo lo contrario...Aprendí un par de cosas leyendo el source.

Muchas gracias,ingenioso código...

Re: Right & Left en C by linkgl

Publicado: 20 Dic 2010, 16:49
por m4rtyr
bueno aqui esta el left y right en un solo , aumente un parametro char rl para 'r' //right y 'l' //left
nota si quieres usar ( char sNueva[256]; ) lo tienes que llenar con zeros char sNueva[256]={'\0'};
tambien si quieres usar el ( char * sNueva=new char[strlen(sCadena)]; ) tienes que usar memset(sNueva,0,strlen(sCadena));

Código: Seleccionar todo

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char * LR(char *sCadena,int iPosicion,char rl);
int main()
{
  printf("right = %s\n",LR("indetectables.net",6,'r'));// el r es para right
  printf("left = %s\n",LR("indetectables.net",6,'l'));// el l es para left
  getchar();
  return 0;
}

char * LR(char *sCadena,int iPosicion,char rl)
{
  int i;
  char * sNueva=new char[strlen(sCadena)];
  memset(sNueva,0,strlen(sCadena));
  if(rl=='r')
  for(i=iPosicion-1;i<strlen(sCadena);i++)
  {
    sNueva[strlen(sNueva)]=sCadena[i];
  }
  else if(rl=='l')
	    for(i=0;i<=strlen(sCadena)-iPosicion;i++)
  {
    sNueva[strlen(sNueva)]=sCadena[i];
  }

  return sNueva;
}
saludos