puntatore di vettori[RISOLTO]

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
Blallo
Packager
Packager
Messaggi: 3259
Iscritto il: ven ott 12, 2007 11:37
Nome Cognome: Savino Liguori
Slackware: 14.1 / 12.2
Kernel: 3.12.2-ck
Desktop: Openbox
Località: Torino / Torremaggiore (FG)
Contatta:

puntatore di vettori[RISOLTO]

Messaggioda Blallo » lun lug 06, 2009 21:08

Codice: Seleziona tutto

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLN 99

int main()
{
   FILE *fp;
   char strIN[MAXLN], a[MAXLN], M[MAXLN][MAXLN];
   char *vett[MAXLN], t[MAXLN];
   int maxrow, i=0, j, k;

   printf("Inserire nome file:");
   scanf("%s",&strIN);
   if((fp=fopen(strIN,"r"))==NULL)
   {
      printf("Errore apertura file");
      return EXIT_SUCCESS;
   }
   printf("Inserire numero righe:");
   scanf("%d",&maxrow);
   if(maxrow>MAXLN)
   {
      printf("Numero righe eccessivo");
      return EXIT_SUCCESS;
   }

   while(((fgets(a,MAXLN,fp))!=NULL)&& (i+1<=maxrow))
   {
      if(a[strlen(a)]=='\n')
         a[strlen(a)]='\0';
      strcpy(M[i], a);
      vett[i]=M[i];
      i++;
   }
   
   for(i=0;i<maxrow;i++)
      printf("%s",vett[i]);
   /*scambio vettori*/
   printf("Che righe vuoi sostituire?(A con B)");
   scanf("%d", &j);
   scanf("%d", &k);
   
   t=vett[j-1];
   vett[j-1]=vett[k-1];
   vett[k-1]=t;   
   
   for(i=0;i<maxrow;i++)
      printf("%s",vett[i]);

   return EXIT_SUCCESS;
}

avendo vett, devo usarlo per scambiare 2 righe tra loro del file di testo che do in input...(grazie a tutti!)
Ultima modifica di Blallo il lun lug 06, 2009 23:13, modificato 1 volta in totale.
Io sono il detective Arsenio Magret, e porto sempre la camicia TATUATA!

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar mar 14, 2006 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.1-64bit
Kernel: 3.10.17
Desktop: xfce
Località: Salerno

Re: puntatore di vettori

Messaggioda d4z_c0nf » lun lug 06, 2009 21:22

Dichiara t come puntatore a char.
Per la cronaca, non so se lo sai ma:

Codice: Seleziona tutto

char *vett[MAXLN]

Questo significa che vett è un vettore di puntatore a char

rock

Avatar utente
Blallo
Packager
Packager
Messaggi: 3259
Iscritto il: ven ott 12, 2007 11:37
Nome Cognome: Savino Liguori
Slackware: 14.1 / 12.2
Kernel: 3.12.2-ck
Desktop: Openbox
Località: Torino / Torremaggiore (FG)
Contatta:

Re: puntatore di vettori

Messaggioda Blallo » lun lug 06, 2009 21:41

perfetto! funziona! ma perchè ho dovuto imporre t come puntatore? (almeno così capisco il funzionamento)
Io sono il detective Arsenio Magret, e porto sempre la camicia TATUATA!

Avatar utente
ulisse89
Packager
Packager
Messaggi: 644
Iscritto il: sab gen 17, 2009 12:53
Nome Cognome: Riccardo
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: Xfce
Località: Bologna

Re: puntatore di vettori

Messaggioda ulisse89 » lun lug 06, 2009 22:24

Nel codice che hai postato t lo dichiari come vettore di puntatori a carattere. Mentre ti serve solo come stringa temporanea per effettuare lo scambio. Per cui devi dichiararla come stringa ovvero come puntatore a carattere.

Avatar utente
Blallo
Packager
Packager
Messaggi: 3259
Iscritto il: ven ott 12, 2007 11:37
Nome Cognome: Savino Liguori
Slackware: 14.1 / 12.2
Kernel: 3.12.2-ck
Desktop: Openbox
Località: Torino / Torremaggiore (FG)
Contatta:

Re: puntatore di vettori

Messaggioda Blallo » lun lug 06, 2009 23:13

claro come il sole
Io sono il detective Arsenio Magret, e porto sempre la camicia TATUATA!


Torna a “Programmazione”

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti