fonction strlen calcule de la longueur de chaine - C - Programmation
Marsh Posté le 31-03-2010 à 21:59:12
Très simple, ta condition de terminaison du for est que caractereActuel soit égale à 0. Or , tu l'initialises à 0 juste avant. Par conséquent, ta boucle for ne se fait pas.
Avec un debugger , tu aurais pu voir ça très facilement.
Attention par ailleurs, que se passe-t-il si la chaine que tu passes ne contient jamais de caractère '0' , la valeur renvoyée sera incohérente.
Marsh Posté le 31-03-2010 à 22:16:34
Merci a toi..
Et comment corrigé ce code?
Comment faire pour debugger car quand je clique sur ce bouttom rien ne se passe.. j'ai code::block
Marsh Posté le 01-04-2010 à 11:24:49
Il te suffit d'initialiser ta variable caractereActuel à une valeur différente de la condition de terminaison , c'est à dire différente de 0.
La différence entre le précédent algorithme et le tien, c'est que dans le premier, la boucle est faite au moins une fois avant de tester la condition de sortie (principe du do-while) , alors que dans le tien, la condition est testée dès le départ de la boucle.
Pour le debugger, il faut que tu mettes des points d'arrêts (ou breakpoint) sur les lignes sur lesquelles tu souhaites que le debugger s'arrête, pour ensuite exécuter pas à pas les instructions de ton programme.
Marsh Posté le 01-04-2010 à 12:42:47
Je me demande si cela ne ferait pas l'affaire aussi:
Code :
|
Marsh Posté le 01-04-2010 à 16:34:23
Merci a tous c'est ok! tout rentre dans l'ordre... .)
Une autre question :
Le i++ dans for(i = 0; i < taille; i++) s'incrémente si la condition est vrai ou elle s'incrémente après les instructions (c'est a dire a la fin de la boucle) ?
Marsh Posté le 01-04-2010 à 17:36:56
Si tu réfléchis bien, "à la fin de la boucle" suppose que l'on y soit entrée parce que la condition était vrai...
Marsh Posté le 01-04-2010 à 20:04:20
lassault1 a écrit : Merci a tous c'est ok! tout rentre dans l'ordre... .) |
tu peux imaginer le for de la façon suivante :
for (X;Y;Z)
{
T
}
équivaut à :
X
while (Y)
{
T
Z
}
Par exemple :
Code :
|
équivaut à
Code :
|
Marsh Posté le 31-03-2010 à 21:24:42
Bonjour
Voila sur le tuto des chaines de caractères il y a cette fonction pour calculer la longueur d'une chaine..
Voici le code :
Donc je voulais modifier ce code pour utiliser une boucle for mais cela fonctionne pas.. ou se trouve le problème?)
Voici le code modifié :