PDA

Visualizza versione completa : Puntatore a vettori char (C)


NS-1
21-07-2004, 12.08.00
per stampare a video 2 stringhe a cui ho accesso tramite un puntatore ho fatto questo:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define NUM 4 // definisco il numero delle stringhe

int main(int argc, char *argv[])
{

char *ptrSTR[NUM] = {"pippo", "pippo-pippo", "pippo3", "pippoPluto"}; // puntatore a 2 vettori char
int count = 0, index, lunStr ;

while(count < NUM){ // finchè non ho processato tutte le stringhe

lunStr = strlen(ptrSTR[count]); // lunghezza delle stringa e termine del ciclo for più sotto

printf("\n\n");

for(index = 0; index <= lunStr; ++index)
printf("%c", ptrSTR[count][index]); // stampo le stringhe

count++;

}

printf("\n\n");

system("PAUSE");

return 0;
}

avrei potuto fare in altro modo?

:cool: grazie e ciao a tutti...

p.s. buone vacanze a chi c'è già con la testa :D

P8257 WebMaster
21-07-2004, 12.48.03
Se vuoi farlo coi puntatori è giusto così .. funziona perché hai dichiarrato il puntatore e riempito direttamente le aree di memoria a cui esso punta ...

Dal punto di vista del codice, potevi eliminare il while e racchiudere tutto in un unico ciclo...

Bye :cool:

NS-1
21-07-2004, 12.54.37
(Y) grazie... adesso tolgo il while :D

NS-1
21-07-2004, 17.28.17
ho provato a togliere il while ma, sarà il caldo, non riesco a farcela... :rolleyes: ...oggi è una brutta giornata... :mad: ...questa sera con calma ci riprovo... :o


:p

P8257 WebMaster
21-07-2004, 17.30.13
(Y) ;)

Bye :cool:

unomichisiada
21-07-2004, 22.20.32
Scusa l'appunto ma non è più semplice invece di stampare le stringhe carattere per carattere con il for ,usare printf("%s",ptrSTR[count])?
O sei vincolatoper qualche motivo a fare così?

P8257 WebMaster
21-07-2004, 22.29.40
Eh noooo .. adesso gli hai svelato uno dei due trucchi per togliere i cicli .. :D...

Bye :cool:

NS-1
22-07-2004, 10.03.16
:D ... in effetti...
mi sono perso su una cavolata...
all'inizio ho scritto - printf("%c", ptrSTR[count][index]) -
solo per vedere se alla fine potevo accedere ai singoli caratteri utilizzando una matrice... poi mi sono dimenticato e ho dato per scontato che fosse giusto così.... :(

ieri è stata una giornataccia.... oggi mi consolo però :D , svolti alcuni compiti importanti, vado a ritirare il mio primo portatile...

mi sento un bambino :D:D:D:D:D:D:D

NS-1
22-07-2004, 10.04.59
ma Web, qual'è l'altro trucco?

p.s. come ricompensa, se mi dai il tuo indirizzo in privato, ti invio una cartolina... :D

NS-1
22-07-2004, 10.11.48
così và meglio?


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define NUM 4

int main(int argc, char *argv[])
{

char *ptrSTR[NUM] = {"pippo", "pippo-pippo", "pippo3", "pippoPluto"};
int count = 0;

while(count < NUM)
printf(" %s\n", ptrSTR[count++]);

printf("\n\n");

system("PAUSE");

return 0;
}


posso evitare anche il while? :D

NS-1
22-07-2004, 10.15.34
adesso con il programmino modificato mi accorgo che non mi serve a nulla... il tutto serviva solo per l'accesso tramite matrice...
cmq se si può togliere in qualche modo il ciclo while, sarei felice d'impararlo...

grazie

P8257 WebMaster
22-07-2004, 10.28.35
NS-1 ha scritto:
così và meglio?


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define NUM 4

int main(int argc, char *argv[])
{

char *ptrSTR[NUM] = {"pippo", "pippo-pippo", "pippo3", "pippoPluto"};
int count = 0;

while(count < NUM)
printf(" %s\n", ptrSTR[count++]);

printf("\n\n");

system("PAUSE");

return 0;
}


posso evitare anche il while? :D

Si :D ... trasformandolo in un "for".. anche se for e while sono la stessa cosa, ma in questo caso la sintassi del "for" è più corretta...

Bye :cool:

P8257 WebMaster
22-07-2004, 10.29.29
Il mio indirizzo privato?...

Scrivi alla mail dell'account di messenger che compare sotto il mio post ;)

Bye :cool:

NS-1
22-07-2004, 11.01.15
fatto... ti ho mandato una mail... :D

unomichisiada
22-07-2004, 12.24.16
Si così va bene e il while non lo puoi evitare a mio avviso,a meno che non lo sostituisci con un for ,(che è una soluzione migliore dato che conosci a priori il numero massimo di iterazioni),che è comunque equivalente al punto di vista del numero di istruzioni.La sostituzione non è comunqe necessaria è solo una questione stilistica,puoi lasciarlo pure com'era e va benissimo.

con il for:
[CODE]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define NUM 4

int main(int argc, char *argv[])
{

char *ptrSTR[NUM] = {"pippo", "pippo-pippo", "pippo3", "pippoPluto"};
int count;

for(count=0;count < NUM;count++)
printf(" %s\n", ptrSTR[count]);

printf("\n\n");

system("PAUSE");

return 0;
}[\CODE]

unomichisiada
22-07-2004, 12.27.37
Ops non mio ero accordo della seconda pagina del 3d,scusate!