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

C

 > 

Divers

 > 

Débutant(e)

 > 

Variable char


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

Variable char

vendredi 27 mai 2011 à 00:17:49 | Variable char

SanDum

Bonjour tout le monde
J'ai un problème dans mon code avec les variables de type char. Ce que je veux faire, c'est de lire les dossiers sur une carte sd venant de mon module arduino et de construire le chemin complet ( /filname2)...
j'ai déclaré les variables qui me posent problème comme suit:
char filename[128],filename2[128],
Voici une partie de mon code:
while( VarSelection != VarDossierChoisie)
{
ummc.readdir(filename, "*");
VarSelection++;
}
Serial.println(filename);
strcpy(filename2,filename);

VarControle=0;
VarSelection=0;
}

//----------------------------------------------------------------------
if(VarControle2==1)
{
Serial.println(strcat ("/",filename2));
VarControle2=0;
}

Le problème est que j'arrive à afficher 1 fois le résultat, mais ensuite tout s’arrête...
Je ne comprend pas bien le fonctionnement des variables char, donc merci de m'expliquer cela dans un langage facile.
Merci de votre aide
Grégory
vendredi 27 mai 2011 à 09:25:57 | Re : Variable char

buno

Administrateur CodeS-SourceS
Hello,
Ton println est en dehors de ta boucle while. Donc il est normal que tu affiches le résultat qu'une seule fois

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
vendredi 27 mai 2011 à 13:09:59 | Re : Variable char

SanDum

Salut Bruno
Merci de ta réponse, en faite comme c'est seulement une partie de mon code et que j'affiche certaine réponse pour voir si ma programmation fonctionnais, le problème vient d'ailleur.
Pour expliquer un peu plus le fonctionnement de mon programme:
la boucle while me sert a déterminer les nom des dossiers que j'ai sur ma carte sd. Il faut que par exemple que la boucle se face 5 fois pour avoir le 5 ème nom du dossier...seulement je dois avoir le chemin complet pour aller prendre dans un dossier les mp3 qui si trouve. Par défaut mon chemin commence par "/" et je dois rajouter le nom du dossier après pour vois le chemin complet.
Dans if(VarControle2==1) ,je dois coller "/" avec "filename2" qui vient d'être copier de "filname". Le problème qui arrive c'est que le chemin complet s'affiche 1 fois quand VarControle2 devient un 1, mais après le programme plante. Donc le problème vient strcat ("/",filename2), je pense, car c'est seulement quand cette fonction s'affiche que tout s’arrête.
J'espère que cela a éclaircie mon problème.
Merci
Grégory
vendredi 27 mai 2011 à 13:42:49 | Re : Variable char

buno

Administrateur CodeS-SourceS

Donc le problème vient strcat ("/",filename2), je pense,


Tu as raison, le problème est ici.
strcat(destination,source), comme son nom l'indique, concatène 2 chaines de caractères: la chaine "source" sera ajoutée à la fin de la chaine "destination", pour peut qu'il y ait suffisamment de place. Or, dans ton cas, la chaine destination est une chaine statique, donc fixe, donc impossible à agrandir. Il faut absolument que le 1er paramètre soit un char* et que sa taille soit suffisante pour accueillir la chaine à ajouter.

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
vendredi 27 mai 2011 à 14:16:31 | Re : Variable char

SanDum

Salut Bruno
Est ce que je peux faire quelque chose dans ce style:
char VariableChemin[128]; filename[64], filename2[64];
VariableChemin="/";
strcpy(filename2,filename);
strcat (VariableChemin,filename2);
Serial.println(VariableChemin); //VariableChemin -> /NomduDossier

Je ne sais pas trop qu'est ce que char*... est ce que c'est ce que j'ai fais ?
Merci
Grégory
vendredi 27 mai 2011 à 14:26:18 | Re : Variable char

buno

Administrateur CodeS-SourceS
Réponse acceptée !
Oui, ça devrait être bon (on est d'accord que, dans ton exemple, ton strcpy ne sert à rien...)


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
vendredi 27 mai 2011 à 22:10:38 | Re : Variable char

SanDum

Allo Bruno
Encore un petit problème.
J'ai déclarer dans mon entête:
char VariableChemin[128]; filename[64], filename2[64];

et dans mon programme
VariableChemin[128]='/';

Partie de mon code :
if(VarControle2==1)
{
VarChaine[128]='/';
Serial.println(VarChaine);
VarControle2=0;
}
Rien ne s'affiche...Comment ca se fait ?
Si je fais la même chose mais que je met VariableChemin[128]="/" dans l'entête, cela s'affiche mais je ne peux plus efface VarChaine sinon le signe '/' n'est plus la pour les autres directions! ( porte une attention au '' ou "")
Merci
Grégory
lundi 30 mai 2011 à 10:02:24 | Re : Variable char

buno

Administrateur CodeS-SourceS

VarChaine[128]='/';


Tu as déclaré 128 "places" pour VariableChemin, numérotées de 0 à...127. Tu essaies d'écrire à la 128..qui n'existe pas.

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...


Cette discussion est classée dans : problème, variables, filename, char, filename2


Répondre à ce message

Sujets en rapport avec ce message

problème tout bête [ par Raoul12 ] voilà, je débute dans le c++ et je voudrais faire ça:char hohun[32] ;hohun = "hohun" ;mais ça ne marche pas... pourtant si je fais ça:char hohun[32] = problème [ par Raoul12 ] voilà, je débute dans le c++ et je voudrais faire ça:char hohun[32] ;hohun = "hohun" ;mais ça ne marche pas... pourtant si je fais ça:char hohun[32] = problème de concaténation [ par moloko2000 ] Existe t'il un moyen de concaténer des char * des char et des int?Je supose que non mais bon .... Convertir des strings [ par UnExPeCtEdSpy ] Bonjour, Présentation du pb:Je ne suis plus trop familier du c++ mais j'ai du m'y remettre pour utiliser un bout de code en tant que DLL au service d' problème de lecture en c++ sous vc++6 [ par os22 ] j'essaie de lire un fichier ayant le contenu suivantmarc;collin;4506777228;906 boule;longueuil;j4j1t5;qc;14;allo;roger;dumais;5413432128;1150 dumahel; Ordre de déclaration des variables ... [ par icedreamer ] Salut.Je continue mon petit prog et les pb suivent aussi ..Il semble que l'ordre de déclaration de mes variables joue un role dans le focntionnement d Décomposition d'un Double en 4 variables Char [ par raidentr ] Un petit Pb Mathématique :Comment à partir un Double (exemple 0xAABBCCDD), je peux obtenir les 4 valeur de chaque octet :char var1=0xAAchar var2=0xBB conversion int en char* [ par arwenita ] Encore un petit problème en C++...Dans mon programme, je voudrais afficher une liste de nombres (premiers), que je récupère de la fonction Crible(n).L Problème de delete [ par ManTico ] Salut à tous, j'ai un peu de peine avec la gestion de la mémoire et je voulais savoir deux choses :- pourquoi en mode Debug mon prog plante sur les de Problème avec char* [ par Wiwi ] Bonjour tt le monde, j'ai une tite pro (bidon) avec ce morceau de programme. Lors de sa compilation il n'y a aucune erreur, par contre lors de son exé


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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 : 0,296 sec (4)

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