Rechercher : dans
Par :

Gestion de chaines de char en C

Dernière réponse le 14 jun 2004 à 18:55:39 tonguim, le 13 jun 2004 à 20:23:40 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « gestion de chaines de char en C » dans :
Liste simplement chaînée VoirLISTES SIMPLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes chaînées A. Initialisation B. Insertion d'un élément dans la liste 1. Insertion...
Liste doublement chaînée VoirLISTES DOUBLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes doublement chaînées A. Initialisation B. Insertion d'un élément dans la liste 1....
Les files en langage C VoirLes files - Premier Entré Premier Sorti Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la file IV. Opérations sur les files A. Initialisation B. Insertion d'un élément dans la file C. Oter un...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...

1

bucheron, le 13 jun 2004 à 21:43:18

Slt tonguim,

-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);
Linux, c'est free, mais c'est pas grave.

Répondre à bucheron

2

tonguim, le 14 jun 2004 à 15:05:28

Merci; j'ai essaye, mais le programme se comporte toujours de la meme maniere

Répondre à tonguim

3

Canard007, le 14 jun 2004 à 15:30:39

Salut,

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);

}

Répondre à Canard007

4

 tonguim, le 14 jun 2004 à 18:55:39

Cette fois, le programme produit les resultats attendus.
Merci a tous

J'ai un autre programme sur lequel je reflechis depuis ...en vain. Mais il faut que je cherche encore.

Répondre à tonguim