PDA

Visualizza la versione completa : [C]Scansione e visualizzazione di un vett di stringhe con puntatori


giumanji
25-01-2012, 18:00
Salve a tutti. Ho un problema con questo esercizio che ho scritto come titolo della discussione. Ho sviluppato il seguente codice:


#include <stdio.h>
#include <stdlib.h>
char *punt;
main()
{
int i,l;
char str[100];
printf("Inserisci la lunghezza della stringa: ");
scanf("%d",&l);
for(i=0;i<l;i++){
printf("Inserisci il %d%c carattere : ",i+1,166);
scanf("%s",&str[i]);
}
punt=str;
for(i=0;i<l;i++){
printf("%c",*punt++);
printf("---> ");
}
printf("FINE\n");

system("PAUSE");
}

Dopo aver inserito la lunghezza della stringa ad esempio 3 se io all'interno della stringa inserisco come primo elemento ''ciao'' come secondo ''abcd'' e come terzo ''quindi'' il programma visualizza:
c---> a---> q--->FINE
io vorrei invece che visualizzasse le intere parole:
ciao---> abcd---> quindi--->FINE
premetto che sto imparando ad usare i puntatori da pochissimo.
Avete qualche consiglio su come fare??
Grazie in anticipo.

oregon
25-01-2012, 18:13
La richiesta è un po' confusa ...

Parli di


lunghezza della stringa ad esempio 3

ma in realtà intendi

3 parole

Parli di un "vettore di strighe" ma hai un "vettore di char" (una stringa) ...

Chiarisci ...

giumanji
25-01-2012, 18:21
Si quando indico la lunghezza voglio dire quante parole devono essere inserite...ma il mio problema è far stampare a video le parole non solamente la prima lettera...come faccio?

oregon
25-01-2012, 18:22
Ti ho anche detto che non esiste un vettore di stringhe come dici ma una sola stringa.

Come sono separate le parole?

Molto probabilmente ti basta usare la funzione

strtok

giumanji
25-01-2012, 18:26
Allora ti spiego: io inserisco quante parole voglio inserire e le inserisco ad una ad una memorizzandole in una stringa e poi vorrei stamparle ma stampa solo la prima lettera della parola inserita...riguardo la funzione che hai detto non so cosa sia e come si utilizza...

oregon
25-01-2012, 18:29
Originariamente inviato da giumanji
Allora ti spiego: io inserisco quante parole voglio inserire e le inserisco ad una ad una memorizzandole in una stringa

Ma non mi rispondi appositamente?

Ti ho chiesto Come sono separate le parole?


e poi vorrei stamparle ma stampa solo la prima lettera della parola inserita...

Ho capito ... l'hai detto in ogni post ...


riguardo la funzione che hai detto non so cosa sia e come si utilizza...

Beh ... i forum servono a dare suggerimenti che si utilizzano per studiare e la cosa presuppone un minimo di impegno ...

http://www.cplusplus.com/reference/clibrary/cstring/strtok/

giumanji
25-01-2012, 18:34
Che vuoi dire come sono separate le parole???
inserisco la prima e premo invio...inserisco la seconda e premo invio fino ad arrivare al numero di parole che voglio inserire...riguardo la funzione che non conosco e l'impegno che metto trank che l'impegno lo metto ma studio ciò che c'è scritto sul libro..se il libro neanche la nomina quella funzione come posso sapere l'esistenza?

oregon
25-01-2012, 18:43
Originariamente inviato da giumanji
Che vuoi dire come sono separate le parole???
inserisco la prima e premo invio...inserisco la seconda e premo invio fino ad arrivare al numero di parole che voglio inserire...

Quindi sono separate dal CR ... ma non sono stringhe separate ... sono tutte parole che vengono inserite all'interno dello stesso vettore str



ma studio ciò che c'è scritto sul libro..se il libro neanche la nomina quella funzione come posso sapere l'esistenza?

Non ti ho chiesto di conoscere ciò che non ti ho detto ma di controllare quello che ti suggerisco ... semmai mi puoi rispondere che non ci sei ancora arrivato ...

Il grande problema del tuo codice (e del ragionamento) è che devi utilizzare un vettore di stringhe e non una sola stringa.

giumanji
25-01-2012, 18:45
Ok e un vettore di stringhe come lo creo? io dichiaro un vettore di char e ad ogni posizione ad esempio vett[0] deve corrispondere una stringa è giusto ciò che dico?

oregon
25-01-2012, 18:49
Originariamente inviato da giumanji
Ok e un vettore di stringhe come lo creo? io dichiaro un vettore di char e ad ogni posizione ad esempio vett[0] deve corrispondere una stringa è giusto ciò che dico?

No.

Un vettore di stringhe è una matrice di char. Devi scrivere

char arr[100][100];

in cui hai 100 stringhe da 100 caratteri.

Loading