Compter le nombre de caractères en C - C - Programmation
Marsh Posté le 19-03-2020 à 17:37:06
Je parle en bref, fatigué...
1) Le code entre balises stp. [cpp ]CODE[ / cpp]
2) Il manque un prototype de toupper() qui se trouve dans ctype.h.
3) Vu 2): Active les warnings!!! gcc: -Wall -Wextra -Werror
4) Ça veut dire quoi "ne marche pas"? Erreur mémoire par hasard? Montre nous l'appel de ta fonction, il y a une subtilité. Renseigne toi aussi sur "const", ça peut servir.
Marsh Posté le 19-03-2020 à 19:39:17
Ah désolé je ne savais pas pour les règles de présentation avec
Code :
|
, pour le #include <ctype.h> je l'ai fais mais je l'ai pas copier coller... Pas de souci à ce niveau.
Et tous simplement, ma fonction sans la condition if retourne un résultat juste en fonction de cque j'écris en print MAIS qui compte ducoup les espaces etc... Par contre lorsque je rajoute la condition if, il me retourne 0, et je ne comprend pas pourquoi.
Je connais "const" ( variable qui ne peut pas être modifié, c'est bien ça ? ) mais je ne pense pas qu'elle me soit utile ici, à moins qu'il y'a une autre méthode que celle que j'ai tenté pour faire ce programme
Merci déjà d'avoir pris le temps de répondre !
Marsh Posté le 19-03-2020 à 20:15:52
Ton code fonctionne très bien. Si je lui donne "abc123 " il me sort 3 comme prévu. Pour la mise en page tu peux toujours éditer en haut.
Par contre comme tu modifies la chaîne il faut que cette dernière soit modifiable, soit
Code :
|
mais pas
Code :
|
Marsh Posté le 22-03-2020 à 14:12:35
A la base, il y a un truc qui ne me plait pas dans ton code : void nombreDeCaractere
Tu ne nommes pas bien ta fonction.
Il faut choisir entre int nombreDeCaracteres et void printNombreDeCaracteres mais choisis un nom qui reflète ce que fait ta fonction.
J'aurais fait cela ainsi :
Code :
|
et pour du code employé en production, j'aurais vérifié en plus que count n'atteignais pas INT_MAX, et utilisé une valeur négative pour signaler une erreur.
A+,
Marsh Posté le 25-03-2020 à 13:55:04
Merci pour vos réponses !
Ce que je ne comprend pas, c'est que pour vous le code marche, mais pour moi il me signale 2 erreurs qui m'empêchent d'exécuter mon code, je ne les avaient jamais eu :
Gravité Code Description Projet Fichier Ligne
Erreur LNK1169 un ou plusieurs symboles définis à différentes reprises ont été rencontrés Lab5ex18_b Lab5ex18_b.exe 1
Erreur LNK2005 _printNombreDeCaractere déjà défini dans main.obj Lab5ex18_b Lab5ex18_b.exe 1
Je ne comprend pas ces erreurs, qu'est ce que "main.obj" ? pk y'a t_il une erreur dans un .exe ? Je n'ai rien touché à ce niveau la et ai quand même des erreurs (vive la programmation)
Marsh Posté le 27-03-2020 à 10:36:11
Ben fais voir ton code au complet, car sinon on ne peut pas répondre.
A+,
Marsh Posté le 27-03-2020 à 16:39:13
Très bizarre mais mon code marche maintenant, je n'ai rien toucher.
A ce qu'il parait c'est peut être un problème de référence obsolète de l'IDE ou il faut "Nettoyer le projet" puis rebuild le programme.
Donc on peut mettre en résolu, puisqu'au final mon code marche .
Merci à vous d'avoir pris le temps de répondre !
Bonne journée à vous.
Marsh Posté le 19-03-2020 à 13:01:03
Bonjour / Bonsoir !
Je me suis mis à programmer en C, et mon objectif et de pouvoir compter le nombre de caractère d'une phrase, sans compter les caractères spéciaux ( "$", "," , "." etc... ). J'ai fais un programme qui compte le nombre de caractère, mais malgré des conditions à l'aide du tableau ASCII ça ne marche pas !
Voici ce que j'ai fais :
#include <stdio.h>
#include <stdlib.h>
// Je rentre ma chaîne de caractère en question en paramètre ( ici str )
void nombreDeCaractere(char *str){
int number_of_char = 0;
// La boucle for convertie toutes les minuscules en majuscules pour ne pas à avoir à différencier dans le tableau ASCII par la suite
for (int i = 0; str[i] != '\0'; i++) {
str[i] = toupper(str[i]);
}
int j=0;
//Boucle pour compter le nombre de caractères
while (str[j] != '\0') {
// Condition pour compter seulement les lettres majuscules ( comprise entre 65 et 90 d'après le tableau ASCII )
if (str[j]>=65 && str[j] <= 90) {
number_of_char++;
j++;
} else {
j++;
}
}
printf("Il y'a %d caracteres", number_of_char);
}
Merci d'avance !