Mettre une chaine string dans un tableau

Signaler
Messages postés
88
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
30 août 2012
-
Messages postés
16
Date d'inscription
lundi 27 septembre 2010
Statut
Membre
Dernière intervention
28 décembre 2012
-
bonjour,

je voudrais savoir comment mettre lettre par lettre une chaine string dans un tableau ...?

merci

6 réponses

Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
1
Salut,
Une chaine est deja un tableau. Ou alors tu parles du type string ?

Exemple 1:
string str = "bonjour";
char *psz = str.c_str();

psz[0] = 'b'
psz[1] = 'o'
psz[1] = 'n'
psz[1] = 'j'
...

Exemple 2 :

char *psz = new char[32];
strcpy(psz, "bonjour");

psz[0] = 'b'
psz[1] = 'o'
psz[1] = 'n'
psz[1] = 'j'
...

Shell
Messages postés
16
Date d'inscription
lundi 27 septembre 2010
Statut
Membre
Dernière intervention
28 décembre 2012

slt tout le monde!!
est ce que quelqun peut m'aider comment concatener une chaine de caractere avec un caracter?
j'ai essye strcat et strcpy mais j'ai trouve beaucoup de probleme
ce que je suis entaine de faire c'est de parcourir une chaine de caractaire
caractere par caractere et je test sur le caractere si c'est un := alors je vais mettre le mot dans une case dans un tableau
puis je vais mettre le plus puis le mot qui se trouve apres le symbole d'affectation
ex: ident:=xx+y;
je dois mettre ident dans la teble puis := puis xx puis + puis Y..
de meme s'il y a un espace
ma deuxieme question c'est comment exprimer le saut de ligne en c est ce que c '\n'?
merci d'avance
Messages postés
14856
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 novembre 2020
93
Hello,
Je n'ai pas tout compris...c'est un peu confus.
- '\n' représente le retour à la ligne
- ":=" n'est pas un seul caractère mes 2, donc une chaine
- quels sont tes problèmes avec strcat() et strcpy()? il faut faire attention à ce que la chaine de destination soit assez grande...


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Messages postés
16
Date d'inscription
lundi 27 septembre 2010
Statut
Membre
Dernière intervention
28 décembre 2012

slt
merci pour votre reponse
:c'est une chaine et donc je doit concatener le : avec le
puisque le lit caractere par caractere
algorithmiquement:
ch=""
lire (c);
ch=ch+c;
ch est une chaine mais c c'est un caractere
strcat fait la concatenation de deux chaine mais pas d'une chaine et un caractere

enfin j'ai trouvé une solution :
char mot[100];
c=fgetc(file);
i=0;
mot[i]=c
et je vais le mettre dans une boucle jusqu'a obtenir c='+'||'-'||' '
et la je fais mot[i]='\0'
printf("%s",mot);
et ca marche
concernant ma deuxieme question:
je lit dans un fichier caractere par caractere avec fgetc() et je teste sur cahque caractere, je suis entraine de faire un analyseur lexical et je doit reconnaitre les lexeme
mon probleme comment je peut tester sur le retour en ligne?
exp: algorithme xx;
declaration entier:p

l'analyseur doit retourner:
algorithme-> mot reserve
xx-> identificateur
;->caractere de ponctuation
declaration->mot reserve
entier-> mot reserve
: caracter de ponctuation
p-> identificateur
ansi de suite
alors comment je peux exprimer que si mon caractere lu est un saut de ligne passer le cursseur de la lecture au debut de la prochaine ligne ?
j'espere que c'est claire
et pardon pour mon francais qui n'est pas bien
merci
Messages postés
14856
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 novembre 2020
93
Hello,
Pour le retour à la ligne, ça se fait automatiquement. Quand fgetc() lira '\n', il passera au suivant.

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Messages postés
16
Date d'inscription
lundi 27 septembre 2010
Statut
Membre
Dernière intervention
28 décembre 2012

slt
je vais voir
merci infiniment