begin process at 2012 02 11 02:18:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

Probleme de chaine


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

Probleme de chaine

jeudi 15 novembre 2007 à 07:18:52 | Probleme de chaine

jb212121

Membre Club
Bonjour à tous,

Je suis en train de faire un petit programme en c et je souhaiterai utilisé un pointeur de caractere mais dev cpp me sort cette erreur :

 E:\Dev-Cpp\*****[Warning] excess elements in array initializer

Voici ce que j'utilise :

char *chemin[3] = {"chaine1", "chaine2", "chaine3", "chaine4"};

Ce qui est bizzard c'est qu'au debut sa marché tres bien et d'un coups sa marche plus.

Merci
jeudi 15 novembre 2007 à 08:16:57 | Re : Probleme de chaine

mad_love_disease


Tu specifie la taille de ton tableau de charactere a 3, et tu l`initialise avec 4 elements, donc le compilateur te dit que l`initialisation de ta liste comporte trop d`elements:

donc soit tu modifie la taille de ton tableau a 4, soit tu enleve chaine 4 de ton initialisation.

char *chemin[4] = {"chaine1", "chaine2", "chaine3", "chaine4"};

char *chemin[3] = {"chaine1", "chaine2", "chaine3"};
Mad Love Disease
jeudi 15 novembre 2007 à 16:14:16 | Re : Probleme de chaine

jb212121

Membre Club
Je croyais qu'on devait compter le 0
donc:
chemin[0]
chemin[1]
chemin[2]
chemin[3]

Cela fais bien 4 éléments je me trompe?
jeudi 15 novembre 2007 à 16:30:10 | Re : Probleme de chaine

fatenov

oui c'est bien cela, en c on commence les indices à partir de zero.
Mais dans la déclaration des tableaux, on fait avec le nombre l'élements.
Essai ce que t'as proposé Mad.
jeudi 15 novembre 2007 à 16:56:36 | Re : Probleme de chaine

mad_love_disease

Bonsoir a tous,

Effectivement, vous avez tous les deux raisons. jb212121 tu a bien 4 elements dans ton exemple donc tu declarera ton tableau ainsi:   char * tab[4];

Les indices et la taille sont deux choses differentes, c pourquoi lorsque tu parcoures un tableau tu as:

for( n = 0 ; n < taille de ton tableau ; n++ )

et non pas n < ou =, dans ce cas la tu essayeras d`avoir l`element taille +1 de ton tableau. C`est exactement le meme probleme lors de l`initialisation  (dans ton premier message)


@ +
jeudi 15 novembre 2007 à 20:06:29 | Re : Probleme de chaine

deck_bsd

Membre Club
Yop,

aie aie aie

char *chemin[3] = {"chaine1", "chaine2", "chaine3", "chaine4"};

c'est quoi ça ? Dans ce genre de situation il faut que tu te représente ce que c'est. Ici tu à un tableau de pointeur char * on est bien daccord. Maintenant imagine, tu fait chemin[0] , il contient quoi ? nulle ne le sait, en fait la tes pointeur de chaine de caractère ne pointe sur rien. Il faut donc allouer de la mémoire. 2 possibilité s'offre à toi si tu n'aime pas ou est pas encore au point avec les alloc de mem :

char chemin[3][11]; voila la tu as un tableau qui peut contenir 3 chaines de caractère de 10 caractère max (oui n'oublie pas le 0 de fin de chaine).

La deuxième, et la meilleur dans ce cas, l'allocation dynamique :

for(i=0;i<3;++i)
{
   chemin[i] = (char *) malloc(sizeof(char)*11);
}

par exemple.

Voila tu as tt les atous en main.

++
deck_bsd
___________________________________
[ [ Lien ]]
jeudi 15 novembre 2007 à 20:42:09 | Re : Probleme de chaine

fatenov

Bravo deck_bsd, t'es le plus attentif ( j'ai pas fait atention pour le char*)

Mais je voulai juste ajouter à (jb21^3) que la méthode de malloc est intéressante car la taille de la chaîne peut être variable pour chaque chaîne en fonction de la longueur du mot que tu veux y mettre (le 11 dans notre cas qui pourra être le nom d'une variable dans ton prog) au contraire d'un tableau statique là où tout est fixé à la déclaration du tableau.
jeudi 15 novembre 2007 à 20:58:16 | Re : Probleme de chaine

SAKingdom

Membre Club
deck_bsd >> faire
char *chemin[3] = {"chaine1", "chaine2", "chaine3"};
fonctionne parfaitement.
chemin[0] pointe sur la première chaine entrée donc ici, "chemin1".
La solution a été apporté. Si chemin contien 4 chaines, alors chemin doit pouvoir contenir 4 pointeur.
char *chemin[4] = ...
ou alors
char *chemin[] = ...

C++ (@++)

jeudi 15 novembre 2007 à 20:59:11 | Re : Probleme de chaine

SAKingdom

Membre Club
Oups, la première chaine entré n'est pas "chemin1" mais "chaine1"

C++ (@++)

jeudi 15 novembre 2007 à 21:10:09 | Re : Probleme de chaine

fatenov

char * c'est un pointeur sur char (UN caractère) non pas un pointeur sur string (chaîne de caractères). Donc si on fait ça : char *chemin[3] = {"chaine1", "chaine2", "chaine3"};
on aura chemin[0]=c
             chemin[1]=h
             chemin[2]=m
et ainsi de suite.
Si on veut accéder à "chaine1" et "chaine2"ce sera dans une autre variable
char* ch1[8], *ch2[8]; /* faire attention au mysrérieux 0 de fin de chaîne */
for(i=0;i<8;i++) {ch1[i]=chemin [i];
                               ch2[i] = chemin [8+i]; }


1 2

Cette discussion est classée dans : probleme, chaine, dev, cpp


Répondre à ce message

Sujets en rapport avec ce message

GLUI et DEV CPP [ par Flamby51 ] Salut a tous, bon j'ai un leger probleme, j'ai deja parcouru la plupart des forums, et certains abordent mon probleme mais aucun ne peut y remedier ap Probleme avec GetComputerNameEx sous Dev cpp [ par Menontona ] J'ai un probleme de compilation avec Dev-cpp, lorsque j'appelle GetComputerNameEx il met Function undeclared. Je met la partie interressante:#include aideeeeeeeeeee svp , probleme sous dev cpp [ par banjo12 ] Boujour tout le monde, voila je devellope un projet pour mon iut où je suis etudiant et j'ai besoin d 'une librairie rtp pour faire passer de la video probleme sous dev-cpp :s louche [ par deck_bsd ] Bonjour, Quelqun peut il me dire pourquoi la ligne de code : strcat(D_message,D_ptdayweek[D_tmt->tm_wday]); Fonctionne sour borland et non sous dev probleme avec Dev cpp(premiere réalisation fenêtre) [ par developvbdebut ] Bonjour tout le mondeJe n'arrive pas à ouvrir un nouveau projet en selectionnant gui\gtk +.En le faisant l'option projet c et bloqué, seul le proget c Sockets C et Dev-cpp [ par shadow1779 ] bonjour, je voudrai savoir de personne qui font de la programmation reseau en C avec les sockets C s'ils ont un problemes avec Dev-c++, moa j'ai pas m Probleme de compilation Qt avec Dev-cpp [ par julien_boss ] Bonjour, bon le probleme n'est pas que je n'arrive absolument pas à compiler Qt avec dev-cpp. Seulement, à la compilation du tutorial n°7 de la docum Calcul numérique avec Dev cpp [ par ffnajia ] Bonjour à tous,Est ce que c'est possible de faire du calcul numérique avec dev cpp? on peut trouver des solveur pour résoudre des équations différenti Probleme de debug avec dev-cpp [ par xcxl ] Bonjour, hier jai voulu debuger mon prg (premiere fois) mais apres avoir cliker sur debug, il me propose de generer les info de debuggage, jaccepte , ressources dev-cpp [ par deck_bsd ] Bonjour,Voila je veu mettre une image dans un controle static. Tout vas bien pour ce qui est des OBM (OBM_CHECK,...) tout s'affiche parfaitement. Le p


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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,499 sec (4)

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