PDA

Visualizza la versione completa : Esercizio stringhe C


Gnocchino
01-06-2017, 17:56
Salve a tutti,dovrei sviluppare una function in c che dati come parametri di input una stringa che rappresenta un testo in italiano,determina e restituisce come parametri di output la parola di lunghezza massima contenuta nel testo e appunto la sua lunghezza.
IL codice che ho sviluppato č questo,il problema č che la printf nel main non mi visualizza la parola ma solo la sua lunghezza..Qualcuno saprebbe aiutarmi?


#include<stdio.h>#include<string.h>
void LongerWord(char [],int *,char *);
int main(){
int lunghezza;
char testo[100],parola[20];
printf("Inserire testo: ");
gets(testo);
printf("Hai inserito: ");
puts(testo);
LongerWord(testo,&lunghezza,parola);
printf("La parola piu lunga e' %s,lunga %d caratteri",parola,lunghezza);
return 0;


}
void LongerWord(char testo[],int *max,char *longer)
{
int i,cnt=0,n;
n=strlen(testo);
for(i=0;i<n;i++){
if(testo[i]==" " || testo[i]=='\n')
{
if(*max<cnt) {
*max=cnt;
strncpy(longer,&testo[i-cnt],cnt+1);
}
cnt=0;
}
else cnt++;
}
}

AmedeoFalco
02-06-2017, 13:40
Prova a scrivere *longer!! Non ne sono molto sicuro ma potresti provare!! In quanto longer dovrebbe essere un puntatore costante di tipo char e da come vedo nel for dovrebbe essere lui il deputato a rintracciare e a memorizzare la parola pių lunga!

Cmq al posto di gets ti conviene usare la versione pių sicura utile a memorizzare anche lo spazio,parlo di:

fgets() quindi fgets(testo,dim_vett_testo,stdin)

dim_vett_testo= dimensione del vettore testo
stdin=permette di acquisire dall'input,la tastiera in questo caso,le parole che vuoi scrivere.

Loading