[C] Récupération de donnée dans un fichier

Fermé
program1337 - 27 déc. 2011 à 11:17
Bonjour =)

Voila mon problème j'ai un fichier avec des donnée de ce type la :
-13 5 8 26 a7 93 4 46 1 201
-9 3 12 23 a8 96 4 46 1 232
-12 1 -2 20 a8 95 4 46 1 232
-13 7 18 1d aa 9a 4 46 1 232

Soit 3 nombres, 3 hexa, 4 nombres

Je code en C pour récupérer ces données, les stocker dans un tableau ensuite c'est du calcul ...

Le problème c'est que j'arrive à extraire les 3 premières colonnes via ce code la :
 main()
{

	FILE* m_File; int i = 0; int j; double **Tab; char szbuff[MAX_CHAR_PER_LINE]; char* token; int x,y;
    
	printf("OK\n");
	// On initialise le tableau
	Tab=malloc(LMAX*sizeof(*Tab));       //On alloue 'taille1' pointeurs.
	for(i=0;i<LMAX;i++)
	{
		Tab[i]=malloc(CMAX*sizeof(**Tab));       //On alloue des tableaux de 'taille2' variables.
    }
	printf("OK\n");
	for(i=0;i<LMAX;i++)
    {
		for(j=0;j<CMAX;j++)
			{
				Tab[i][j] = -1;
			}
    }
    
	printf("OK\n");
	// On réinitialise le compteur de ligne et de la colonne
    i=0;
	printf("OK\n");
    // On ouvre le fichier en lecture seule et en mode texte
    m_File = fopen(PATH,"rt");
	printf("OK\n");

	// On lit le fichier ligne a ligne et on stocke les valeurs dans un tableau d'entier
    // La boucle while a l'avantage de permettre la lecture d'un fichier sans connaitre son nombre de ligne exact
    // et nous évite donc de faire bugger le programme
    // Le "feof" veut "End Of File". On lit donc jusuqu'à la fin du fichier
    while(!feof(m_File) && i < LMAX)
    {
		
		j=0;
		// On récupere la ligne courante du fichier
		fgets(szbuff,MAX_CHAR_PER_LINE,m_File);
		// On decoupe la ligne selon le charactere de séparation SEP ("	")
		token = strtok(szbuff,SEP);
		// On lit les éléments découpés un à un et on les stocke dans le tableau Tab
			while(token != NULL && j < CMAX)
			{
				// On stocke la valeur lue dans le tableau
				Tab[i][j] = atoi(token);
				// On lit l'element suivant retourner par strtok
				token = strtok(NULL,SEP);
				// On incremente le compteur des ordonnées
				j++;
			}
		// On incrémente le compteur des abscisses
		i++;
    }
    
	// On affiche le tableau pour etre sur que tout s'est bien passé...
    for(x=0;x<i;x++)
    {
		for(y=0;y<j;y++)
		{
			printf("%lf \t",Tab[x][y]);
		}
		printf("\n");
    }
	
}


Bref maintenant pour extraire seulement les colonnes hexa j'utilise ce code
 main()
{

	FILE* m_File; int i = 0; int j; double **Tab; int x,y;
    
	printf("OK\n");
	// On initialise le tableau
	Tab=malloc(LMAX*sizeof(*Tab));       //On alloue 'taille1' pointeurs.
	for(i=0;i<LMAX;i++)
	{
		Tab[i]=malloc(CMAX*sizeof(**Tab));       //On alloue des tableaux de 'taille2' variables.
    }
	printf("OK\n");
	for(i=0;i<LMAX;i++)
    {
		for(j=0;j<CMAX;j++)
			{
				Tab[i][j] = -1;
			}
    }
    
	printf("OK\n");
	// On réinitialise le compteur de ligne et de la colonne
    i=0;j=0;
	printf("OK\n");
    // On ouvre le fichier en lecture seule et en mode texte
    m_File = fopen(PATH,"rt");
	printf("OK\n");

	// On lit le fichier ligne a ligne et on stocke les valeurs dans un tableau d'entier
    // La boucle while a l'avantage de permettre la lecture d'un fichier sans connaitre son nombre de ligne exact
    // et nous évite donc de faire bugger le programme
    // Le "feof" veut "End Of File". On lit donc jusuqu'à la fin du fichier
    
	if (m_File != NULL)
	{
		for(j=0;j<3;j++)
		{
		
			for(i=0;i<3;i++)
			{
				fscanf(m_File,"%lf",&Tab[i][j]);
			}

		}
	}


	// On affiche le tableau pour etre sur que tout s'est bien passé...
    

	for(x=0;x<4;x++)
    {
		for(y=0;y<4;y++)
		{
			printf("%lf \t",Tab[x][y]);
		}
		printf("\n");
    }
	
}


Mais la je vois pas comment choisir seulement mes trois colonnes hexa et passer a la ligne suivant ... si vous avez des idées je suis preneur merci beaucoup =)