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

Borrar texto en cadena

Estas en el tema de Borrar texto en cadena en el foro de C/C++ en Foros del Web. Buenas chicos, tengo la siguiente cadena en un puntero @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C: Ver original "address"       "199.72.43.91" necesito borrar "address" y dejar ...
  #1 (permalink)  
Antiguo 10/06/2012, 21:45
Avatar de guzzano  
Fecha de Ingreso: julio-2010
Ubicación: Isla de Margarita
Mensajes: 162
Antigüedad: 13 años, 8 meses
Puntos: 13
Borrar texto en cadena

Buenas chicos, tengo la siguiente cadena en un puntero
Código C:
Ver original
  1. "address"       "199.72.43.91"

necesito borrar "address" y dejar solo la dirección IP, ya probé de muchas maneras pero no son elegantes y son lentas, a ver si me pueden ayudar.

De antemano gracias,
Saludos.
  #2 (permalink)  
Antiguo 10/06/2012, 23:05
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 3 meses
Puntos: 94
Respuesta: Borrar texto en cadena

Hola! Acordate que cuando se hace referencia a una cadena se encierra entre "" (comillas dobles), en tu caso parecieran dos, debe ser:
Código C:
Ver original
  1. "addres 199.72.43.91" // solo un par de comillas
pequeño detalle pero bueno :P

Lo de codigo lento y poco elegante se corrige con el tiempo y la practica, asi q no te tires abajo(cada uno programa como puede), y postia el codigo q tengas para ayudarte y ver si se puede optimizar, y en caso de no funcionar arreglarlo

Saludos
  #3 (permalink)  
Antiguo 11/06/2012, 00:11
Avatar de guzzano  
Fecha de Ingreso: julio-2010
Ubicación: Isla de Margarita
Mensajes: 162
Antigüedad: 13 años, 8 meses
Puntos: 13
Respuesta: Borrar texto en cadena

Cita:
Iniciado por cesar_casla Ver Mensaje
Hola! Acordate que cuando se hace referencia a una cadena se encierra entre "" (comillas dobles), en tu caso parecieran dos, debe ser:
Código C:
Ver original
  1. "addres 199.72.43.91" // solo un par de comillas
pequeño detalle pero bueno :P

Lo de codigo lento y poco elegante se corrige con el tiempo y la practica, asi q no te tires abajo(cada uno programa como puede), y postia el codigo q tengas para ayudarte y ver si se puede optimizar, y en caso de no funcionar arreglarlo

Saludos
Jaja se maneja es así "address" "IP" son dobles comillas. Mira, tengo esto es lo mas cerca que estuve de hacerlo mas rapido

Código C:
Ver original
  1. fgets(LINE, sizeof(LINE), FAVORITES);
  2.         while (!feof(FAVORITES)) {
  3.             if (strstr(LINE, "\"History\"")) {
  4.                 break; }
  5.            
  6.             if (LINE_S = strstr(LINE, "\"address\"")) {
  7.                 if (I > 49) {
  8.                     MAX_IP++;
  9.                    
  10.                 IP_DIVIDE = strtok(LINE_S, "\"address\"");
  11.                 while ((IP_DIVIDE = strtok(NULL, "\"address\"")) != NULL) {
  12.                     puts(IP_DIVIDE);
  13.                     IP_F[J++] = IP_DIVIDE; }}
  14.                 else {
  15.                     I++; }}

El problema esta en que me imprime así, aquí todo bien, tiene al parecer dos saltos de lineas que no logro quitárselos.

Código:
199.71.232.91:27010


199.72.43.91:27010


11.11
Entonces cuando quiero imprimir IP_DIVIDE[0] me muestra así:
Código:
IP 199.71.234.6:27016"
De donde esta sacando el texto IP y la comilla, no tengo idea.

Y tenia otra manera, que era la que mas cerca tenia, pero era lenta, solo faltaba una conversión de char a string, era esta.

Código C:
Ver original
  1. if (FAVORITES != NULL) {
  2.             fseek(FAVORITES, 0, SEEK_END);
  3.             CARACTER = ftell(FAVORITES);
  4.             char PARSE[CARACTER];
  5.            
  6.             fseek(FAVORITES, 0, SEEK_SET);
  7.             PARSE[0] = getc(FAVORITES);
  8.             while (feof(FAVORITES) == 0) {
  9.                 PARSE[i++] = getc(FAVORITES); }
  10.                
  11.             char *P_PARSE;
  12.             char IP[20][100];
  13.             P_PARSE = PARSE;       
  14.                
  15.                
  16.             for (j = 0 ; j < strlen(PARSE) ; j++) {
  17.             if (*P_PARSE == '"' && P_PARSE++ &&*P_PARSE == 'a' && P_PARSE++ && *P_PARSE == 'd' && P_PARSE++
  18.                && *P_PARSE == 'd' && P_PARSE++ && *P_PARSE == 'r' && P_PARSE++ && *P_PARSE == 'e' && P_PARSE++
  19.                && *P_PARSE == 's' && P_PARSE++ && *P_PARSE == 's' && P_PARSE++ && *P_PARSE == '"') {
  20.                
  21.                 P_PARSE = P_PARSE+4;
  22.                 if (*P_PARSE > 0) {
  23.                     while (*P_PARSE != '"') {
  24.                         IP[k][z] = *P_PARSE;
  25.                         if (IP[k][z] == ':') {
  26.                             y = k; }
  27.                         k++;
  28.                         P_PARSE++;
  29.                        
  30.                         if (y > 0) {
  31.                             x++;
  32.                             if (x > 5) {
  33.                                 IP[k+1][z] = '\0';
  34.                                 z++;
  35.                                 k = 0; x = 0; y = 0; }}}}}
  36.                        
  37.                 P_PARSE++;}

Saludos y agradezco muchísimo tu ayuda.
  #4 (permalink)  
Antiguo 11/06/2012, 14:28
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Borrar texto en cadena

Lo que vos queres hacer es copiar el IP a otra cadena?? Aqui tenes una solucion rapida. Primero buscamos el primer numero:

Código C:
Ver original
  1. i = 0;
  2. while ( ! isdigit (P_PARSE[i])) i++;


Ahora copiamos desde i hasta donde corresponda:

Código C:
Ver original
  1. j = 0;
  2. while ( isdigit (P_PARSE[i]) || P_PARSE[i] == '.' || P_PARSE[i] == ':'  ) {
  3.     IP[j] = P_PARSE[i];
  4.      i++; j++ ;
  5. }
  6. IP[j] = '\0';


La funcion seria:


Código C:
Ver original
  1. i = 0;
  2. while ( ! isdigit (P_PARSE[i])) i++;
  3. j = 0;
  4. while ( isdigit (P_PARSE[i]) || P_PARSE[i] == '.' || P_PARSE[i] == ':'  ) {
  5.     IP[j] = P_PARSE[i];
  6.      i++; j++ ;
  7. }
  8. IP[j] = '\0';

Saludos

Etiquetas: cadenas
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:00.