Grazie a mondobimbi ho risolto, il codice funziona.
Adesso ho voluto complicare un pò le cose, e anzichè passargli un'unica parola, è mia intenzione passare un array di parole, dichiarato nel main, e attraverso l'uso della funzione di ripulitura, rifare ciò che è stato fatto in precedenza. Con un semplice ciclo FOR pensavo di poter risolvere invece, funziona solo in parte e come al solito non riesco a cancellare la congiunzione e gli spazi.
Nella parte dell'IF si dovrebbe rilevare la congiunzione e sostituirla con degli spazi vuoti, nel WHILE invece trimmare gli spazi, però ricevo errori di memoria, potete vedere per cortesia?
spero che i commenti nel programma possano aiutarvi. GRAZIE DI NUOVO!!!
codice:
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
int ripulitura (char via[50][50])
{
// definizione delle variabili e puntatori
int lunghezza_i;
int lunghezza_cong;
int i = 0;
int l = 0;
char temp[20];
char *tmp = temp;
char *puntatore;
// definizione della congiunzione
char cong1[] = " DI ";
char *cong = cong1;
lunghezza_cong = strlen(cong);
// definisce la lunghezza della stringa di partenza e della congiunzione
for (l=0; l<4; l++)
{
i = 0;
lunghezza_i= strlen(via[l]);
// stampa la stringa di partenza e la sua lunghezza
cout << "\nStringa:\t "<< via[l] << endl;
cout << "Lunghezza:\t " << lunghezza_i << endl;
// ricerca della parola da eliminare
// STRSTR: ritorna in punt,il puntatore nella posizione della prima ripetizione della congiunzione
puntatore= strstr (via[l],cong);
// inserisce lo spazio dove ha trovato la congiunzione
// lo spazio è indicato col suo carattere ascii 32
if (puntatore != 0)
{
while (i < lunghezza_cong)
{
*(puntatore+i)=32;
i++;
}
}
while (via)
{
//la funzione ritorna un valore diverso da 0 se ho uno spazio
if ( !isspace (*via[l]))
{
*tmp = *via[l];
tmp = tmp + 1;
}
via = via + 1;
}
// inserisco il carattere di fine stringa
*tmp = '\0';
// stampo la stringa prova di spazi
cout << "Ripulita:\t " << temp << endl;
}
return 0;
}
void main()
{
// definisco un vettore di lunghezza fissa
// vie_viario indica l'elenco delle vie giuste
char vie_viario[50][50] = {"VIA DELLE PERLE","VIA DELLE TERME","VIA DI PROVA","VIA DI CITTA"};
// richiamo la funzione di ripulitura
int d = ripulitura(vie_viario);
}
so che è un programma un pò strano ma in sostanza, ciò che dovrebbe fare il programma è restituire le parole dell'array, ripulite dalle congiunzioni (per adesso solo DI) e dagli spazi:
esempio:
VIA DELLE PERLE -> VIAPERLE