Problème de pointeur : erreur non-lvalue in assignment
AmStErDaMnEd
Messages postés12Date d'inscriptionmardi 12 juin 2007StatutMembreDernière intervention25 août 2010
-
9 oct. 2008 à 09:59
AmStErDaMnEd
Messages postés12Date d'inscriptionmardi 12 juin 2007StatutMembreDernière intervention25 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;
//--------------------------------------------------------------
// 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.
A voir également:
Problème de pointeur : erreur non-lvalue in assignment
AmStErDaMnEd
Messages postés12Date d'inscriptionmardi 12 juin 2007StatutMembreDernière intervention25 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.
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 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) = ...