Afficher le caractere 'e' dans une chaine en C

Buzio Messages postés 2 Date d'inscription samedi 14 juin 2008 Statut Membre Dernière intervention 14 mars 2009 - 17 déc. 2008 à 00:24
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 26 déc. 2008 à 21:52
Bonjour,les gars! j'ai juste un petit problème avec mon programme.
Au fait, je dois faire un programme qui permet retrouver le caractere
'e' dans une chaine tapée à partir du terminal UNIX. je l'ai fait mais
il m'affiche une seule erreur concernant l'utilisation de strlen. Voici
mon code:

#include<stdio.h>

#include<string.h>

#include<conio.h>

int main (int argc, char* argv[])

{ int i,compteur;

for(i=1;i<argc;i++)

{

if('e'==strlen(argv[1][i]))

{

compteur++;

}

}

if(compteur==1)

printf("%dn",compteur);

else

printf("0n");

}

NB:Aidez-moi les gars!

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
17 déc. 2008 à 00:52
Salut
Ca ne t'a pas paru bizarre de choisir une catégorie de question nommée "VB.NET et VB2005" pour poser une question sur le langage C ?
Pas très perspicace ...
Repose ta question sur le forum du bon site, tu auras plus de chance d'avoir une réponse : http://www.cppfrance.com/

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
17 déc. 2008 à 01:56
oui, c'est du C.

if('e'==strlen(argv[1][i]))

c'est même surprenant que ce genre de truc compile.

bref;

strlen calcule la longueur d'une chaine

argv[1] est ta chaine (ton premier param à l'appel)

argv[1][i]; le ieme  caractere de cette chaine

'e' est un caractere

Je te laisse améliorer ton truc

sachant que argv[2] sera ton secon param à l'appel

que argc en est le nombre

et que tu peux avoir la taille de chaqu'un avec ceci:

strlen(argv[x])

nota : l'usage est de donner une aide si argc est nul.

Bonne prog

___________________________________________________________
Magicalement
Nono
0
Buzio Messages postés 2 Date d'inscription samedi 14 juin 2008 Statut Membre Dernière intervention 14 mars 2009
17 déc. 2008 à 11:39
slt Mr magic je viens de compiler mon programme sous unix il m'a affiche
une erreur de segmentation. alors j'ai mis if('e'==strlen(argv[x])) comme tu l'as dit
et quand même ça ne passe pas.il m'affiche un avertissement de ce
genre: warning: comparaison between pointer and integer. et lorsque je
le compile il dit :segmentation fault.
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
26 déc. 2008 à 21:52
pour le jeu, je viens de le faire sous Ubuntu (unix)

tout d'abord s'assurer que les packages de dev soient bien installés:

"sudo apt-get install build-essential "

ceci fait, on peut  jouer

"gedit main.cpp &"

qu'on remplit ainsi

[source]
#include <stdio.h>
// strlen inutil donc supprimé             #include <string.h> // ici seulement pour strlen...

int main (int argc, char* argv[])
{
  if(argc<2)
  {
    printf("\nUsage : ce mini soft détaille vos arguments et comptabilise les \'e\'\n");
  }
  else
  {
  int i,j,compteur;

  for(i=1;i0;j--)
    {
      //parcourt du ieme argument
      if('e'==argv[i][j-1])
      {
        compteur++;
      }
     }
/*/ // version sans strlen
    for(j=0, compteur = 0;'\0'!=argv[i][j];j++)
    {
      //parcourt du ieme argument
      if('e'==argv[i][j])
      {
        compteur++;
      }
     }
// */
     printf("\n arg %d : %d \'e\':<%s>",i,compteur,argv[i]);
  }
 
  }
  printf("\nfin\n");
  return 0;
}
/source

dernière étape, on compile, éventuellement rend exécutable et exécute un test

"clear ; g++ main.cpp -o main.exe ; chmod +x main.exe ; ./main.exe azerty aaaaaaaaaa bbbbbbbbbb eeeeeeeeeeee
"

et ça donne à l'exécution :
[source]
 
arg 1 : 1 'e':
 arg 2 : 0 'e':
 arg 3 : 0 'e':
 arg 4 : 12 'e':<eeeeeeeeeeee>
fin
/source

voily, c'était ce genre de truc que tu voulais??

___________________________________________________________
Magicalement
Nono
0
Rejoignez-nous