Problème de pointeur : erreur non-lvalue in assignment

AmStErDaMnEd Messages postés 12 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 25 août 2010 - 9 oct. 2008 à 09:59
AmStErDaMnEd Messages postés 12 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 25 août 2010 - 9 oct. 2008 à 10:40
Bonjour,
    j'ai récupéré un bon de code pour pouvoir splitter une chaine. Cela fonctionne sans pointeur. Cependant, j'ai besoin de récupérer un char* et non un tableau pour le paramètre d'une fonction API.

Voici le code:
    int i,j=0;
    string files; // fichier test
    string rep;
   
    files = "\\\\...\\...\\action_00062_0.mov#C:\\action_02969_0.mov";
    //files = argv[1];
   
    //--------------------------------------------------------------  
    //  Calcul de la mémoire totale utilisée par tous les processus 
    //-------------------------------------------------------------- 
    if(function_get_mem_use() < MAX_MEMORY)
    {
        //--------------------------------------------------------------  
        //  Récupération de tous les fichiers (insertion dans tableau) 
        //--------------------------------------------------------------
        // Déclaration des variables
        istringstream tabNewType(files);
       
        const char* tab; // Car function_verif_file_exist veut un const char*
        tab = (const char*)malloc(2);
        string mot; // Car getline veut un string
       
        while (getline(tabNewType, mot,'#'))// On parcours tte la chaine tabNewType avec le séparateur #, et on met le résultat dans mot
        {
            tab+j = mot.c_str(); // Convertit un string en char*
            j++;
        }
        cout<<tab+1<<endl<<tab+2<<endl;
   
        //---------------------------------------------------------------------------------------------  
        //  Tâche a effectué suivant ce qu'a demandé l'utilisateur
        //  (vérification de la présence de fichiers, suppression de fichiers, déplacement de fichiers 
        //---------------------------------------------------------------------------------------------  
        //if(argv[2]=="verif_file_existe")
        //{   
            //for(i = 0; i < argv[1].length; i++) // Pour tous les fichiers
            //{                    function_verif_file_exists(tab+1) ? rep "Fichier existant\n" : rep "Fichier inexistant\n";

     C'est donc la ligne en rouge qui me retourne l'erreur. Si je fait tab[j] et que je déclare tab en tant que const char* tab[2], cela fonctionne mais tab[1] et tab[2] lors de l'affichage, vaut toujours le second fichier (


C:\\action_02969_0.mov).
    Quelqu'un aurait une idée ? Merci d'avance.

3 réponses

AmStErDaMnEd Messages postés 12 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 25 août 2010
9 oct. 2008 à 10:18
Bon bah j'ai finit par trouvé avec le tableau, j'ai un peu honte (c'est tab[0] et tab[1] et non tab[1] et tab[20]).
Cependant, je ne comprend toujours pas pour les pointeurs.
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
9 oct. 2008 à 10:27
Bonjour.
Tu as déja un problème lors de ta "conversion"de tableau en pointeur.
const char* tab[2];
<=>
const char ** tab;
tab = (char **) malloc(2* sizeof(char *));

et au niveau de l'affectation il faudrait, (sauf erreur de ma part ;) )
un *(tab+j) = ...
0
AmStErDaMnEd Messages postés 12 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 25 août 2010
9 oct. 2008 à 10:40
Merci Laurent de ton aide, cela fonctionne maintenant
0
Rejoignez-nous