Autor Tema: Cortar un texto en C  (Leído 19798 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Dark

  • Sv Member
  • ***
  • Mensajes: 281
Cortar un texto en C
« : abril 13, 2009, 03:53:30 pm »
Hola tengo una duda como puedo hacer para cortar una cadena de texto en C???
Tengo un cadena que tiene 12 caracteres pero solo quiero los primeros 8 cararcteres como puedo hacer???

Ejemplos:
Lo que se captura
426009011022
Lo que se quiere
42600901

Lo que se captura
426008931994
Lo que se quiere
42600893

Gracias de Antemano
--Siempre habra gente q te lastime, asi q lo q tienes q hacer es seguir confiando y solo ser mas cuidadoso en quien confias dos veces

Desconectado Camus de Acuario

  • The Communiter-
  • *
  • Mensajes: 8455
  • Ōrora Ekusukyūshon!
Re: Cortar un texto en C
« Respuesta #1 : abril 13, 2009, 04:00:50 pm »
pues en c que me acuerde no hay ninguna funcion ya defininda de substring, pero podes crear una, aca te la dejo:

Código: [Seleccionar]
#include <stdio.h>

char *substring(size_t start, size_t stop, const char *src, char *dst, size_t size)
{
   int count = stop - start;
   if ( count >= --size )
   {
      count = size;
   }
   sprintf(dst, "%.*s", count, src + start);
   return dst;
}

int main()
{
   static const char text[] = "The quick brown fox jumps over the lazy dog.";
   char a[10], b[5];
   printf("substring = \"%s\"\n", substring(4, 13, text, a, sizeof a));
   printf("substring = \"%s\"\n", substring(4, 13, text, b, sizeof b));
   return 0;
}

/* my output
substring = "quick bro"
substring = "quic"
*/

espero que sea para algo que ocupes y no una tarea que tengas que realizar, saludos

Desconectado Maitro...

  • The Communiter-
  • *
  • Mensajes: 2996
  • Maitrosoft ©®™
Re: Cortar un texto en C
« Respuesta #2 : abril 13, 2009, 04:13:42 pm »
De C no se mucho, pero mi logica me dice que lo podrias meter en un arreglo y luego recorrer las 8 posiciones que necesites :phew:

Desconectado mxgxw

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 5665
  • Starlet - 999cc
    • mxgxw
Re: Cortar un texto en C
« Respuesta #3 : abril 13, 2009, 04:53:26 pm »
De C no se mucho, pero mi logica me dice que lo podrias meter en un arreglo y luego recorrer las 8 posiciones que necesites :phew:

En C (hablo de C no de C++) las cadenas son arreglos de caracteres... no hay tipo "string" como en otros lenguajes.

Y es C o C++

Si es C podes utilizar la funcion strnccpy de la biblioteca estandar cstring.

Código: [Seleccionar]
#include <stdio.h>
#include <cstring.h>

int main()
{
   char text[] = "Esta es mi linea de prueba."; // Cadena original
   
   int mitad = strlen(text)/2; // Obteniendo la mitad de la cadena

   char buffer[512]; // Buffer para copiar la mitad
 
   strncpy(buffer,text,mitad);

   sprintf("%s\r\n",buffer); // Visualizacion de la cadena

   return 0;
}


Notas: Para usar strncpy ES NECESARIO que exista un arreglo inicializado. Para el ejemplo utilice una cadena de caracteres inicializada a 512. El tamanio lo podes dejar fijo con un valor alto (1024) o si queres ahorrar memoria podes obtener el largo de la cadena y luego con malloc asignar el espacio de memoria para el arreglo. Acordandote que al terminar el programa tenes que liberar la misma.

En el ejemplo asumo que ya podes hacer capturas de cadenas desde la linea de comandos y por eso trabajo con una cadena estatica.

Referencia:
http://www.cplusplus.com/reference/clibrary/cstring/strncpy/
« Última Modificación: abril 13, 2009, 05:05:25 pm por mxgxw »


Desconectado Dark

  • Sv Member
  • ***
  • Mensajes: 281
Re: Cortar un texto en C
« Respuesta #4 : abril 13, 2009, 05:06:55 pm »
Gracias a todos por la Info....
--Siempre habra gente q te lastime, asi q lo q tienes q hacer es seguir confiando y solo ser mas cuidadoso en quien confias dos veces

Desconectado Azarías

  • The Communiter-
  • *
  • Mensajes: 1212
  • No hay camino a la paz, La paz es el camino...
Re: Cortar un texto en C
« Respuesta #5 : julio 08, 2009, 02:31:48 pm »
Mira viejo que yo sepa podes copiar cierta cantidad de caracteres de una cadena cad1 a otra cadena cad2, pero no podes cortarla, exisste una funcion para hacer esta cuestion, respodeme si siempre si interesa
Antes Raphaxto, hoy Azarías (Tobías 12,15)