Programmation en C
yoann
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour cher internautes,
Je suis novice en matière de programmation et j'aimerais un peu d'aide ^^.
J'ai crée un petit programme demandant a l'utilisateur de saisir une lettre, puis une phrase et le programme compterais le nombre de fois ou la lettre apparaitrait dans la phrase.
Voici mon code :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char lettre[1],*chaine;
int nb=0,i=1;
do {
printf("Saisissez un caractère : ");
gets(lettre);
// vérifie si l'utilisateur tape une seule lettre
if (strlen(lettre)!=1)
printf("Une SEULE lettre !\n");
}
while(strlen(lettre)!=1);
printf("Saisissez une phrase :");
gets(chaine);
while(chaine[i]!='\0'){
if (chaine[i]==lettre){
nb++;
i++; }
else i++;
}
if (nb=0)
printf("Votre phrase ne comporte pas le caractère %c \n",lettre);
else printf("Votre phrase contient %d fois le caractère %c \n",nb,lettre);
return 0;
}
Merci d'avance pour votre aide :)
Je suis novice en matière de programmation et j'aimerais un peu d'aide ^^.
J'ai crée un petit programme demandant a l'utilisateur de saisir une lettre, puis une phrase et le programme compterais le nombre de fois ou la lettre apparaitrait dans la phrase.
Voici mon code :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char lettre[1],*chaine;
int nb=0,i=1;
do {
printf("Saisissez un caractère : ");
gets(lettre);
// vérifie si l'utilisateur tape une seule lettre
if (strlen(lettre)!=1)
printf("Une SEULE lettre !\n");
}
while(strlen(lettre)!=1);
printf("Saisissez une phrase :");
gets(chaine);
while(chaine[i]!='\0'){
if (chaine[i]==lettre){
nb++;
i++; }
else i++;
}
if (nb=0)
printf("Votre phrase ne comporte pas le caractère %c \n",lettre);
else printf("Votre phrase contient %d fois le caractère %c \n",nb,lettre);
return 0;
}
Merci d'avance pour votre aide :)
A voir également:
- Programmation en C
- Application de programmation - Guide
- Mettre en veille un programme - Guide
- Programmer en basic sous windows 10 - Télécharger - Édition & Programmation
- Un autre programme est en cours d'installation - Forum Windows 10
- Programmation envoi sms - Guide
1 réponse
Salut,
SI tu as un caractère à stocker dans une chaîne, utilise simplement le type char. Pas besoin de tableaux.
Qui plus est un tableau de char à un seul élément, attention. Tu dois stocker le \0.
Ensuite pour que l'utilisateur stocker un caractère dans un type char, utilise la fonction getchar(). Exemple :
Dans ce cas plus besoin d'utiliser strlen. En plus, il ne faut pas utiliser la fonction gets, mais plutôt fgets. Sinon segfault dès que tu rentreras trop de caractères. Tu en auras besoin pour le tableau chaine.
Et pour ta dernière boucle while, autant utiliser :
Une dernière remarque, n'oublie pas que l'opérateur d'égalité en C, est == et non = (cf ton dernier if).
Si t'as des questions n'hésite pas.
SI tu as un caractère à stocker dans une chaîne, utilise simplement le type char. Pas besoin de tableaux.
Qui plus est un tableau de char à un seul élément, attention. Tu dois stocker le \0.
Ensuite pour que l'utilisateur stocker un caractère dans un type char, utilise la fonction getchar(). Exemple :
char lettre; lettre=getchar();
Dans ce cas plus besoin d'utiliser strlen. En plus, il ne faut pas utiliser la fonction gets, mais plutôt fgets. Sinon segfault dès que tu rentreras trop de caractères. Tu en auras besoin pour le tableau chaine.
Et pour ta dernière boucle while, autant utiliser :
for(i=0;i<strlen(chaine);i++){ ...
Une dernière remarque, n'oublie pas que l'opérateur d'égalité en C, est == et non = (cf ton dernier if).
Si t'as des questions n'hésite pas.