Foros del Web » Programación para mayores de 30 ;) » C/C++ »

substr() para C

Estas en el tema de substr() para C en el foro de C/C++ en Foros del Web. Luego de buscar y buscar la función substr() (de PHP) para C y no poder hallarla GRATIS y lista para usar no tuve opción que ...
  #1 (permalink)  
Antiguo 26/12/2007, 01:08
Avatar de reyesoft  
Fecha de Ingreso: abril-2006
Ubicación: San Rafael, Mendoza
Mensajes: 311
Antigüedad: 18 años, 7 meses
Puntos: 15
De acuerdo substr() para C

Luego de buscar y buscar la función substr() (de PHP) para C y no poder hallarla GRATIS y lista para usar no tuve opción que hacerla yo mismo.

Y como esta comunidad siempre me ayuda tanto, espero en este momento poder ayudarte a vos que has llegado acá.

La función substr() la he publicado en mi página personal http://wiki.reyesoft.com/Substr_en_C.

Espero que te sirva y cualquier modificación la editar o me lo comentas.
__________________
Pablo Reyes

Compra/venta saldos PayPal, Skrill, Neteller, Bitcoins, etc.
  #2 (permalink)  
Antiguo 26/12/2007, 15:52
Avatar de Solenbum  
Fecha de Ingreso: noviembre-2007
Mensajes: 45
Antigüedad: 17 años
Puntos: 0
Re: substr() para C

oye, de entrada, esta bien.
  #3 (permalink)  
Antiguo 18/11/2010, 14:43
 
Fecha de Ingreso: enero-2008
Mensajes: 53
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: substr() para C

Muchas gracias la verdad me re sirvió la función.
  #4 (permalink)  
Antiguo 18/11/2010, 17:00
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: substr() para C

LO QUE HACE LA FUNCIÓN QUE TU PROPONES SE PUEDE HACER CON strncpy, AUQUE EN ESTE CASO SERÍA NECESARIO UTILIZAR UTILIZAR UN BUFFER.

TU SOLUCION TIENE EL INCONVENIENTE LA MEMORIA QUE LE ASIGNAS A nuevo NUNCA ES LIBERADA, PARA QUE NO SUCEDA ESTO PUEDES UTILIZAR UN BUFFER COMO EN strncpy, O LIBERAR LA MEMORIA ASIGNADA ...

EL SIGUIENTE CÓGIDO TE MUESTRO COMO HACER LO MISMO PERO CON strncpy Y strcpy, MODIFIQUE UN POCO TU FUNCION YA QUE TENIA ALGUNOS INCONVENTIENTES, ADEMAS TE MUESTRO COMO UTILIZAR TU FUNCION UTILIZANDO MEMORIA DINAMICA PARA QUE NO QUEDE LACK MEMORY, QUE ES MEMORIA NO LIBERADA LIBERADA.

Código C++:
Ver original
  1. #include "stdafx.h"
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. char* substr(char* cadena, int comienzo, int longitud=0)
  6. {
  7.     if (longitud == 0)
  8.         longitud = strlen(cadena)-comienzo;
  9.    
  10.     char *nuevo = (char*)malloc(sizeof(char) * (longitud+1));
  11.     nuevo[longitud] = '\0';
  12.     strncpy(nuevo, cadena + comienzo, longitud);
  13.    
  14.     return nuevo;
  15. }
  16.  
  17. int main (void) {
  18.         char *var = "abcdef";
  19.         char buffer[6]="";
  20.     //UTILIZANDO strncpy Y strcpy
  21.     printf("%s\n", strncpy(buffer, &var[2], 3));    //devuelve "cde"
  22.     printf("%s\n", strcpy(buffer, &var[2]));    //devuelve "cdef"
  23.  
  24.     //Utilizando tu propuesta
  25.     var = substr("abcdef", 2, 3);
  26.     printf("%s\n", var);    //devuelve "cde"
  27.     free(var);
  28.  
  29.     var = substr("abcdef", 2);
  30.     printf("%s\n", var);    //devuelve "cdef"
  31.     free(var);
  32.     return 0;
  33.  
  34. }

Última edición por margarito04; 18/11/2010 a las 17:07
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 22:24.