Pagina 1 di 1

puntatore di vettori[RISOLTO]

Inviato: lun 6 lug 2009, 21:08
da Blallo

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!)

Re: puntatore di vettori

Inviato: lun 6 lug 2009, 21:22
da d4z_c0nf
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

Re: puntatore di vettori

Inviato: lun 6 lug 2009, 21:41
da Blallo
perfetto! funziona! ma perchè ho dovuto imporre t come puntatore? (almeno così capisco il funzionamento)

Re: puntatore di vettori

Inviato: lun 6 lug 2009, 22:24
da ulisse89
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.

Re: puntatore di vettori

Inviato: lun 6 lug 2009, 23:13
da Blallo
claro come il sole