Gestion de chaines de char en C
tonguim
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
je voudrai realiser un prg en C qui lit une ligne de texte, et affiche ensuite:
-la longueur de la chaîne
-le nombre de "e" contenus dans la chaîne
-la chaine saisie à rebours sans changer le contenu de la variable qui contient la chaîne
-la chaine à rebours apres avoir inversé l'ordre des caractères dans la variable qui contient la chaîne.
J'ai des difficultés à réaliser les 2 dernieres questions; quelqu'un pourrait il m'aider?
Mon code:
[code]
#include <stdio.h>
main ()
{
char txt[200], chaine_inv[200];
int i = 0, j = 0, nbre_e = 0;
clrscr();
printf("Veuillez entrer une chaine: ");
gets(txt);
printf("\n\nLa longueur de la chaine entree est: %d", strlen(txt));
for (i = 0; i <= strlen(txt); i = i + 1)
{
if (txt[i] == 'e')
nbre_e = nbre_e + 1;
}
printf ("\n\nLe nombre de caracteres e contenus dans cette chaine est: %d", nbre_e);
for (i = strlen (txt); i >= 0; i = i - 1)
{
puts(txt[i]);
}
getch();
}
[/code]
Merci
je voudrai realiser un prg en C qui lit une ligne de texte, et affiche ensuite:
-la longueur de la chaîne
-le nombre de "e" contenus dans la chaîne
-la chaine saisie à rebours sans changer le contenu de la variable qui contient la chaîne
-la chaine à rebours apres avoir inversé l'ordre des caractères dans la variable qui contient la chaîne.
J'ai des difficultés à réaliser les 2 dernieres questions; quelqu'un pourrait il m'aider?
Mon code:
[code]
#include <stdio.h>
main ()
{
char txt[200], chaine_inv[200];
int i = 0, j = 0, nbre_e = 0;
clrscr();
printf("Veuillez entrer une chaine: ");
gets(txt);
printf("\n\nLa longueur de la chaine entree est: %d", strlen(txt));
for (i = 0; i <= strlen(txt); i = i + 1)
{
if (txt[i] == 'e')
nbre_e = nbre_e + 1;
}
printf ("\n\nLe nombre de caracteres e contenus dans cette chaine est: %d", nbre_e);
for (i = strlen (txt); i >= 0; i = i - 1)
{
puts(txt[i]);
}
getch();
}
[/code]
Merci
A voir également:
- Gestion de chaines de char en C
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Gestion de fichiers - Télécharger - Gestion de fichiers
- Logiciel gestion photo gratuit - Guide
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Logiciel gestion garage - Télécharger - Organisation
4 réponses
Slt tonguim,
La boucle 'for' que tu as mis est _presque_ bonne :
car la fonction strlen renvoie (si mes souvenir sont bons) la taille de la chaîne, et non pas l'indice du dernier caractère (qui est taille - 1).
presque le même code pour cette question (presque la même question ...)
-la chaine saisie à rebours sans changer le contenu de la variable qui contient la chaîne
La boucle 'for' que tu as mis est _presque_ bonne :
for (i = strlen (txt) - 1 ; i >= 0; i = i - 1)
{
puts(txt[i]);
}
car la fonction strlen renvoie (si mes souvenir sont bons) la taille de la chaîne, et non pas l'indice du dernier caractère (qui est taille - 1).
-la chaine à rebours apres avoir inversé l'ordre des caractères dans la variable qui contient la chaîne
presque le même code pour cette question (presque la même question ...)
int taille = strlen (txt) - 1;
...
for (i = taille ; i >= 0; i = i - 1)
{
chaine_inv[taille - i] = txt[i];
}
chaine_inv[taille+1] = '\0' // marqueur de fin de chaîne
puts (chaine_inv);
Salut,
Compilé et testé ca marche voici le code:
Compilé et testé ca marche voici le code:
#include <stdio.h>
#include <string.h>
void main ()
{
char txt[200];
char chaine_inv[200]="";
int i = 0, j = 0, nbre_e = 0;
int taille=0;
printf("Veuillez entrer une chaine: ");
gets(txt);
printf("\n\nLa longueur de la chaine entree est: %d", strlen(txt));
taille=strlen(txt)-1;
for (i=0;i<=taille; i++)
{
if (txt[i] == 'e') nbre_e = nbre_e + 1;
}
printf ("\n\nLe nombre de caracteres e contenus dans cette chaine est: %d\n", nbre_e);
for (i = taille ; i >= 0; i = i - 1)
{
chaine_inv[taille - i] = txt[i];
}
chaine_inv[taille+1] = '\0';
puts (chaine_inv);
}