IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Copie tableau à tableau


Sujet :

C

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 29
    Par défaut Copie tableau à tableau
    Hello tout le monde,
    Voila les intentions :
    • lire chaque ligne d'un fichier et en extraire 3 floats
    • retourner ces 3 floats dans un tableau
    • puis les stocker dans un autre tableau beaucoup plus grand


    Le prob survient au moment ou je copie les floats du petit tableau au plus grand : les valeurs ne passent pas, j'obtiens du chenis.
    le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    #define FILENAME_LENGTH 100
    #define LINE_MAXLENGTH 100
    #define VERTICES_LENGTH 10000
    #define FACES_LENGTH 10000
     
    int main(void) {
    	char fileName[FILENAME_LENGTH];
    	double vertices[VERTICES_LENGTH];
    	int faces[FACES_LENGTH];
     
    	promptFileName(fileName);
     
    	readObjFile(fileName, vertices, faces);
    	return 0;
    }
     
    void readObjFile(char* fileName, double* vertices, int* faces){
    	FILE* infile;
    	char line[LINE_MAXLENGTH];
    	int vertices_counter = 0;
    	int faces_counter = 0;
     
    	if((infile = fopen(fileName, "r")) == NULL) {
    		printf("Error Opening File.\n");
    		exit(1);
    	}
    	printf("parsing du fichier... (%s)\n", fileName);
     
    	while( fgets(line, LINE_MAXLENGTH, infile) != NULL ) {
    		if(line[0] == 'v'){
    			double* vert = getVertices(line);
    			printf("contenu de vert : %lf %lf %lf\n", vert[0], vert[1], vert[2]); // affiche les bonnes valeurs
    			for(int i = 0; i < 3; i++){
    				vertices[vertices_counter] = vert[i]; // ceci ne fonctionne pas
    				vertices_counter++;
    			}
    		}
    		else if(line[0] == 'f'){
    			//int* faces = getFaces(line);
    		}
    	}
     
    	fclose(infile);
    	printf("End of parsing\n");
    }
     
    double* getVertices(char* line){
    	double vert[3];
    	int i = 0;
    	while(line[i] == 'v' || issep(line[i])){
    		i++;
    	}
     
    	char res[20];
    	int pos = 0;
    	do{
    		res[pos] = line[i];
    		pos++;
    		i++;
    	}
    	while(!issep(line[i]) && line[i] != '\n');
     
    	res[pos] = '\0';
    	vert[0] = atof(res); // string -> double
    	printf("1er vertice est : %lf\n", vert[0]);
     
    	// second vertex
    	i++;
    	pos = 0;
    	do{
    		res[pos] = line[i];
    		pos++;
    		i++;
    	}
    	while(!issep(line[i]) && line[i] != '\n');
    	res[pos] = '\0';
    	vert[1] = atof(res);
    	printf("2e vertice est : %lf\n", vert[1]);
     
    	// third vertex
    	i++;
    	pos = 0;
    	do{
    		res[pos] = line[i];
    		pos++;
    		i++;
    	}
    	while(!issep(line[i]) && line[i] != '\n');
    	res[pos] = '\0';
    	vert[2] = atof(res);
    	printf("3e vertex est : %lf\n", vert[2]);
     
    	return vert;
    }
    Tout compile. Ah et j'ai remarqué que si je ne fais pas le printf où il affiche les bonnes valeurs, le résultat n'est pas le même dans le tableau vertices (il ne se compose que d'une valeur, qui est approximativement ce que j'attends pour la 1ere)
    Est-ce que j'ai loupé quelque chose au niveau des pointeurs/tableau ?
    J'ai joint le fichier que je parse (un fichier .obj d'essai (renommé en .c car .obj non accepté dans le forum))

    A noter que je suis au courant que ce code n'est pas élégant du tout, ça devrait être qu'une bricole à faire à la base...
    Merci
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Copie un tableau dans un autre
    Par Montor dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/05/2008, 21h29
  2. redimenssionnement & copie de tableau
    Par TOPGUN89 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 24/09/2007, 14h45
  3. Format des surfaces et copies vers tableau
    Par ultimanu dans le forum DirectX
    Réponses: 7
    Dernier message: 12/04/2007, 16h33
  4. Copie de tableau dynamique Tridimensionel
    Par Zenol dans le forum C++
    Réponses: 23
    Dernier message: 19/12/2005, 16h00
  5. [Tableau]Problèmes avec copie de tableau
    Par Itachi-san dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 25/11/2005, 17h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo