Sábado 14 de Diciembre de 2024, 18:04
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Eliminar Cadena De Un Texto
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Eliminar Cadena De Un Texto (Leído 3361 veces)
cazadorite
Nuevo Miembro
Mensajes: 23
Eliminar Cadena De Un Texto
«
en:
Jueves 3 de Enero de 2008, 03:28 »
0
hi quiero eliminar una cadena de un texto pero sin usar funciones de string como strstr y eso yo use un codigo fuente que encontre por la red pero lo unico que hago es poner espacio donde se encontraba la cadena, pero quiero eliminar esa cad asi corro lo que queda de la cadena.
aca dejo algunos codigo fuente de muestra
.
quiero que quede como este codigo pero en ves de borrar 1 caracter y correr la cadena, elimine esa cadena y se corra en ese lugar lo que queda de texto.
Código: Text
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main (void)
{
char cad[2][20],c;
for(int x=0;x<2;x++)
{
printf ("Introduce palabra: ");
gets (cad[x]);
}
printf ("caracter ");
scanf("%c",&c);
for(int j=0; j<2; j++)
{
for(int k=0; k<strlen(cad[j]); k++)
{
if(cad[j][k]==c)
{
for(int w=k+1; w<=strlen(cad[j]); w++)
cad[j][w-1] = cad[j][w];
k--;
}
}
}
for(int z=0;z<2;z++)
printf(" %s \n",cad[z]);
getch();
return 0;
}
este es el trucho que le pongo espacio
Código: Text
/*Entrar una cadena desde teclado y a continuacion entrar una palabra, comprobar
si la palabra esta dentro de la cadena y si es asi, sustituir esa por #, y
visualizar la cadena tratada.*/
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
void main ()
{
char frase[100], busca[50];
char *result;
int i,j, k, inicio, fin, sw=0;
printf ("Introduce una frase : ");
gets (frase);
printf ("palabra a eliminar ");
gets (busca);
for(i=0;i<strlen (frase);i++)
{
//almacenamos inicio para no perderlo cuando incrementos en el segundo
//for la i
inicio=i;
for(j=0;j<strlen(busca);j++)
{
if(frase[i]==busca[j])
{
//la ultimo valor q se almacena en fin sera el indice final de busqueda
fin=i;
i++;
//conmutador para saber que hemos entrado a comparar palabra, si cuando
//terminemos el if sigue a 1 el sw es q la palabra esta encontrado
//con exito
sw=1;
}
else
{
/*si la ultima vez q entramos al bucle if en esta pasada del for
entramosen el else quiere decir q la palabra a buscar no coincide
en esta interraccion con la palabra en la frase*/
sw=0;
}
}
//podrimaos poner un solo if..pero mejor asi por claridad
if(sw==1)
{
if((frase[inicio-1]==' ' && frase[fin+1]==' ') || (inicio==0 && frase[fin+1]==' ') || (fin==strlen(frase)-1 && frase[inicio-1]==' '))
{
for(k=inicio;k<fin+1;k++)
{
frase[k]=' ';
}
}
}
}
printf ("\n%s",frase);
}
Tweet
cazadorite
Nuevo Miembro
Mensajes: 23
Re: Eliminar Cadena De Un Texto
«
Respuesta #1 en:
Sábado 5 de Enero de 2008, 00:22 »
0
hi al final lo deje como taba con funcion strstr porque me fije como era esa funcion para buscar cadena y es mucho lio
mm no hay otra forma + facil
codigo funcion strstr(buscar cadenas)
Código: Text
Las siguientes funciones NO usan funciones de string.h
Código:int longitud(char *cadena)
{
int i = 0;
while(cadena[ i ]!='\0')
i++;
return i;
}
int verificar(char *cadena, char *subcadena)
{
int i, j;
int l_cadena = longitud(cadena);
int l_subcadena = longitud(subcadena);
if(l_cadena < l_subcadena)
return 0;
if(cadena[ 0 ]=='\0' && subcadena[ 0 ]=='\0')
return 1;
for(i=0; i < l_cadena; i++)
if(cadena[ i ]==subcadena[ 0 ])
{
if(l_cadena-i < l_subcadena)
return 0;
for(j=0; j < l_subcadena; j++)
if(cadena[ i+j ]!=subcadena[ j ])
break;
if(j==l_subcadena) j==null
return 1; break;
}
while(si)
pos=j-cad;
return 0;
}
codigo para eliminar cadena de un texto
Código: Text
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main(void)
{
char renglon[50];
char cad[50];
char palabras[50][50];
int cont=0;
printf("Ingrese frase ");
fflush(stdin);
gets(renglon);
printf("cadena a eliminar ");
fflush(stdin);
gets(cad);
int i, j=0;
for(i=0; i<strlen(renglon); i++)
{
/* Si es un caracter distinto de espacio y salto de linea */
if(renglon[i]!=' ' && renglon[i]!='\n')
{
palabras[cont][j] = renglon[i];
j++;
/* Si el caracter siguiente es fin de cadena */
if(renglon[i+1]=='\0')
{
palabras[cont][j] = '\0'; /* Indica fin de palabra */
cont++; /* Aumenta el numero de palabras */
j=0;
}
}
/* Si es espacio o salto de linea */
else if(renglon[i]==' ' || renglon[i]=='\n')
{
/* Si el caracter anterior no es espacio ni salto de linea */
if(i>0 && renglon[i-1]!=' ' && renglon[i-1]!='\n')
{
palabras[cont][j] = '\0'; /* Indica fin de palabra */
cont++; /* Aumenta el numero de palabras */
j=0;
}
}
}
char *pdest;
int pos, len, total;
int x;
total = strlen(renglon);
len = strlen(cad)+1;
while(1)// recorre cadena busca de cadena a eliminar si no encuentra nada se muestre la cadena como se ingreso
{
pdest = strstr( renglon, cad);
if( pdest == NULL ) //no encuentra nada sale del programa
break;
pos = pdest - renglon; // no entiendo que resta ahi me lo pueden explicar
for(x=pos+len; x<=total; x++)
renglon[x-len] = renglon[x]; // esto tambien -_-
}
printf("%s", renglon);
getch();
}
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Eliminar Cadena De Un Texto