begin process at 2012 05 30 12:04:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Autre

 > 

strtok et atof la memoire ne peut etre written


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

strtok et atof la memoire ne peut etre written

jeudi 10 avril 2008 à 13:03:52 | strtok et atof la memoire ne peut etre written

ciberrique

Bonjours j'ai écris ce code mais il y a une erreur a l'execution de type la mémoire de ne peut etre "written".
Il semlerait que l'erreur soit sur les ligne ou je fais la conversion de la chaine de caractere en float avec la fonction atof et strtok.
Si quelqu'un a une idée, cela m'aiderais grandement.

void LoadObj(char *path){
            char buffer[500];
            int i,;
            FILE * fread;

            fread = fopen(path, "r");

            if (fread != NULL) {

                i =1;
                Obj.x = (float *) malloc(sizeof(float));
                Obj.y = (float *) malloc(sizeof(float));
                Obj.z = (float *) malloc(sizeof(float));

                while (fgets(buffer,500,fread)){
                    if (strncmp(buffer,"v ",2)==0){
                        strtok(buffer," ");
                        Obj.x[i] = (float)atof(strtok(NULL, " "));
                        Obj.y[i] = (float)atof(strtok(NULL, " "));
                        Obj.z[i] = (float)atof(strtok(NULL, "\n"));
                        i++;
                        Obj.x = (float *) realloc(Obj.x, sizeof(float) * i);
                        Obj.y = (float *) realloc(Obj.y, sizeof(float) * i);
                        Obj.z = (float *) realloc(Obj.z, sizeof(float) * i);
                    }             
                 }
                fclose(fread);
            }
        }//fin de fonction

jeudi 10 avril 2008 à 15:46:11 | Re : strtok et atof la memoire ne peut etre written

SAKingdom

Membre Club
Réponse acceptée !
i =1;

Un tableau commence toujours à 0.

Obj.x = (float *) realloc(Obj.x, sizeof(float) * i);
Obj.y = (float *) realloc(Obj.y, sizeof(float) * i);
Obj.z = (float *) realloc(Obj.z, sizeof(float) * i);

Oufff!!! Que c'est lourd ça. Tu serais peut-être mieux d'allouer plus de mémoire dès le début puis ne réallouer que si le buffer est dépassé.

C++ (@++)

jeudi 10 avril 2008 à 18:36:44 | Re : strtok et atof la memoire ne peut etre written

ciberrique

Effectivement, j'ai donc mis i à 0 et effectué quelque modification :

void LoadObj(char *path){
            char buffer[500];
            int i,;
            FILE * fread;

            fread = fopen(path, "r");

            if (fread != NULL) {

                i =0;
                Obj.x = (float *) malloc(sizeof(float)*386);
                Obj.y = (float *) malloc(sizeof(float)*386);
                Obj.z = (float *) malloc(sizeof(float)*386); //386 correspond au nombre de lignes de mon fichier

                while (fgets(buffer,500,fread)){
                    if (strncmp(buffer,"v ",2)==0){
                        strtok(buffer," ");
                        Obj.x[i] = (float)atof(strtok(NULL, " "));
                        Obj.y[i] = (float)atof(strtok(NULL, " "));
                        Obj.z[i] = (float)atof(strtok(NULL, "\n"));
                        i++;
                    }             
                 }
                fclose(fread);
            }
        }//fin de fonction

Donc maintenant ca ne plante plus, mais je pars dans l'idée que je ne connais pas le nombre de ligne donc est il possible d'avoir une formulation correcte pour un realloc ?

jeudi 10 avril 2008 à 18:39:49 | Re : strtok et atof la memoire ne peut etre written

ciberrique

Oups j'ai rien dis, j'ai compris mon erreur, je dois realloc a i+1 et pas i.

Merci pour ta reponse.


www.e-fitz.com
Encore plus de source et de tutoriels.


Cette discussion est classée dans : obj, sizeof, float, atof, strtok


Répondre à ce message

Sujets en rapport avec ce message

fwrite en mémoire.... [ par loicus ] Bonjour à tous...J'ai un très gros probleme.  Je travail avec des fichiers binaires en lecture et en écriture.Je n'ai aucun probleme avec l'utilisatio Tableaux a 2 dimensions [ par AsM0DeUz ] 'lut !Je tente de comprendre les tableaux a 2 dimensions en me servant d'un tableau de pointeurs. Seulement lorsque je me documente sur le net, je ten atof strtok.... char to double [ par helppije ] salut à tous,Je cherche un moyen de convertir une chaine de charactere en double en c++.Je connais les fonction atof ou strtok mais je n'ai pas reussi CList et win32 [ par jojomillenium ] Bonjour, ma question est simple, je defini mes classes telquel: // COORDONNEES class VERTEX                            // Build our Vertex Class { pub erreur variable dans une classe [ par pumab12 ] voila jai un probleme :: class SPEC Player : public Unit{    friend class WorldSession;    public:        explicit Player (WorldSession *session);     probleme sscanf char[] et char* [ par jojomillenium ] Bonjour, J'ai un mechant bug que je n arrive vraiment pas a regler! Voila j'ai une fonction qui li un fichier             char couchelu[50];           alignement d'adresse [ par potate ] Bonjour à tous, dans le cadre d'un projet scolaire j'ai à coder la fonction malloc.Mon problème est le suivant : ma fonction doit renvoyer une adresse Probleme sur Calcul de mensualite ProgrammeC [ par ratp ] Bonjour à tous,voila j'ai un un probleme, lorsque je lance le fichier .exe windows ferme la fenetre.Je vous remerci de votre aide par avance.ci dessou resoudre une matrice triangulaire superieure [ par alyggattor ] Bonjour à tous,je suis un debutant en C. J'ai voulu travailler sur la resolution d'une matrice d'ordre n directement triangulaire superieure. Cependan valeur maximum des float [ par dacor ] bonjour,comment peut on avoir la valeur maximum possible d'un flaot..?est ce qu'il y'a une fonction du genre getMaxFloat() ....?merci de votre aide


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,026 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales