#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define size 200
void sostituisci_stringhe_statico (char testo [], char pattern [], char stringa_2 []);
void sostituisci_stringhe_dinamico (char *p_testo, char *p_pattern);
void main ()
{
char testo [size];
char pattern [size];
char stringa_2 [size];
char p_testo, p_pattern;
short scelta;
printf ("1. Eliminazione di stringa con allocazione statica\n2. Eliminazione di stringa con allocazione dinamica\n\nDigita la scelta: ");
scanf ("%d", &scelta);
if ((scelta != 1) && (scelta!=2))
printf ("Scelta non valida!\n");
else
if (scelta == 1)
sostituisci_stringhe_statico (testo, pattern, stringa_2);
else
{
sostituisci_stringhe_dinamico (&p_testo, &p_pattern);
}
}
void sostituisci_stringhe_statico (char testo [], char pattern [], char stringa_2 [])
{
int i, j, k, conta, lunghezza_testo, lunghezza_pattern, lunghezza_stringa_2;
char copia_testo [size];
fflush (stdin);
printf ("\nDigita il testo: ");
gets (testo);
fflush(stdin);
printf ("\nDigita il pattern da ricercare: ");
gets (pattern);
fflush(stdin);
printf ("\nDigita il pattern da sostituire: ");
gets (stringa_2);
lunghezza_testo = strlen (testo);
lunghezza_pattern = strlen (pattern);
lunghezza_stringa_2 = strlen (stringa_2);
if (lunghezza_pattern<lunghezza_stringa_2)
{
strcpy (copia_testo,testo);
}
printf ("\n");
k = 0;
for (i=0; i<lunghezza_testo; i++)
{
conta = 0;
if (strncmp (pattern, testo+i, lunghezza_pattern) == 0)
{
j=i;
do
{
*(testo+j) = *(stringa_2+conta);
conta++;
j++;
printf ("sostituisco\n");
}
while (conta<lunghezza_stringa_2);
if (lunghezza_pattern > lunghezza_stringa_2)
{
printf ("pattern>stringa\n");
j=i;
do
{
*(testo+j+lunghezza_stringa_2) = *(testo+j+lunghezza_pattern);
j++;
}
while (*(testo+j+lunghezza_pattern) != EOF);
}
else
{
if (lunghezza_pattern < lunghezza_stringa_2)
{
j=i;
puts (copia_testo);
printf ("%d\n", i);
do
{
if (k<0)
{
*(testo+j+lunghezza_stringa_2) = *(copia_testo+j+lunghezza_pattern);
printf ("%d\n",k);
j++;
lunghezza_testo = strlen (testo);
}
else
{
*(testo+j+lunghezza_stringa_2) = *(copia_testo+j+lunghezza_pattern-k);
printf ("%d\n",k);
j++;
lunghezza_testo = strlen (testo);
}
}
while (*(copia_testo+j+lunghezza_pattern) != EOF);
//strcpy (copia_testo,testo);
k++;
printf ("Il testo finalez e': %s\n", testo);
}
}
}
}
printf ("Il testo finale e': %s\n", testo);
}