Repository 32bit  Forum
Repository 64bit  Wiki

puntatore di vettori[RISOLTO]

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata e la versione del Kernel. Questi dati aiutano le persone che possono rispondere.
2) Specificare sempre il tipo di shell (bash, sh, csh, etc...)
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 dell'ultima regola porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

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
Blallo
Packager
Packager
 
Messaggi: 3052
Iscritto il: ven ott 12, 2007 11:37
Località: Torino / Torremaggiore (FG)
Nome Cognome: Savino Liguori
Slackware: 14 x64 / 12.2
Kernel: 3.2.x
Desktop: Xfce

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
d4z_c0nf
Packager
Packager
 
Messaggi: 1266
Iscritto il: mar mar 14, 2006 19:07
Località: Salerno
Nome Cognome: Rocco Aliberti
Slackware: current64
Kernel: 3.2.13
Desktop: awesome 3.4.11

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
Blallo
Packager
Packager
 
Messaggi: 3052
Iscritto il: ven ott 12, 2007 11:37
Località: Torino / Torremaggiore (FG)
Nome Cognome: Savino Liguori
Slackware: 14 x64 / 12.2
Kernel: 3.2.x
Desktop: Xfce

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
ulisse89
Packager
Packager
 
Messaggi: 644
Iscritto il: sab gen 17, 2009 13:53
Località: Bologna
Nome Cognome: Riccardo
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: Xfce

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!
Avatar utente
Blallo
Packager
Packager
 
Messaggi: 3052
Iscritto il: ven ott 12, 2007 11:37
Località: Torino / Torremaggiore (FG)
Nome Cognome: Savino Liguori
Slackware: 14 x64 / 12.2
Kernel: 3.2.x
Desktop: Xfce


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite