PDA

Visualizza la versione completa : [C] Aritmetica dei puntatori


Cyber-X91!
18-02-2013, 17:16
Ho un problema su questo esercizio non so come risolverlo:

Riscrivere il seguente programma utilizzando esclusivamente l'aritmetica dei
puntatori invece dell'indicizzazione (eliminare la variabile i e tutti gli usi dell'operatore []).



int main(int argc, char *argv[])
{
int i;
for (i=1; i<argc; i++)
printf("%s%s", argv[i], (i<argc-1) ? " " : "");
printf("\n");
return 0;
}

oregon
18-02-2013, 18:33
*(argv+i) equivale ad argv[i]


P.S. Per il codice utilizza i tag CODE ... !

Cyber-X91!
18-02-2013, 20:04
Ok scusami... Comunque devo eliminare anche l indice nel for e tutte le parentesi quadre

oregon
18-02-2013, 20:26
E non hai nessuna idea ?

Cyber-X91!
19-02-2013, 15:29
Me lo chiedi per mettermi alla prova oppure non lo sai manco tu? comunque io avevo fatto se ricordo bene in questo modo:


int main(int argc, char *argv[])
{
int *p;
for (p = 1; p<argc; p++)
printf("%s%s", *(argv + p), (p<argc-1) ? " " : "");
printf("\n");
return 0;
}

è giusto?

torn24
19-02-2013, 17:06
Me lo chiedi per mettermi alla prova oppure non lo sai manco tu?

Probabilmente ti voleva fare ragionare sul problema , e poi ti avrebbe mostrato una soluzione .

L' uso che fai di un puntatore ad interi , è orribile , è come usare una scarpa come schiaccianoci :D

Comunque al posto del for e delle variabili potresti usare un while



while(*argv!=0)
{


argv++;

}
oppure
for(;*argv!=0;argv++)



P.s Non mi sarei intromesso nella discussione , visto che chi ti ha risposto è più adatto di me ,se non fosse , che non mi è piaciuta la tua risposta , infondo ti stanno aiutando , bisogna ricordarselo :D

Cyber-X91!
19-02-2013, 17:29
Nono ma infatti non era una critica, chiedo scusa se è potuto sembrare così ho chiesto perchè non capivo per quale motivo me lo avesse chiesto... Comunque siamo in un forum puoi intrometterti eccome e riguardo ai puntatori ahuuahhuauhauh si hai ragione :D Grazie per la risposta :)) Riguardo al for se metto diverso da zero non mi si ferma mai è diverso dal confrontarlo con la i e dato che non saprei con chi confrontarlo non so minimamente come fare... Se non ti dispiace ho messo un altro post riguardo i file se vuoi vederlo mi fai un piacere:) Scusami oregon...

oregon
19-02-2013, 20:59
Originariamente inviato da Cyber-X91!
Scusami oregon...

Di nulla ... in effetti la mia domanda era fatta perché tu ci ragionassi un po' ...

Comunque, anche se il regolamento vieta la "pappa pronta" eccoti un esempio di codice



int main(int argc, char **argv)
{
while(*(++argv))
printf("%s%s", *argv, *(argv+1) ? " " : "");

printf("\n");
return 0;
}


che però dovrai tentare di studiare tu ...

Cyber-X91!
19-02-2013, 22:00
Certamente e grazie... non capisco qual è la condizione di uscita del while

Cyber-X91!
21-02-2013, 16:34
Dato che nell esercizio c'è:


(i < argc - 1)

Io con cosa lo devo confrontare dato che i non ce l'ho piu? Con l'indirizzo di argc ?

Loading