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

Signaler
Messages postés
12
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
25 août 2010
-
Messages postés
12
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
25 août 2010
-
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

Messages postés
12
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
25 août 2010

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.
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
18
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) = ...
Messages postés
12
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
25 août 2010

Merci Laurent de ton aide, cela fonctionne maintenant