Aide pour inverser une chaîne de caractère en C
Résolu/Fermé
tonyx01
fiddy
- Messages postés
- 42
- Date d'inscription
- samedi 1 décembre 2012
- Statut
- Membre
- Dernière intervention
- 17 février 2014
fiddy
- Messages postés
- 11067
- Date d'inscription
- samedi 5 mai 2007
- Statut
- Contributeur
- Dernière intervention
- 23 avril 2022
A voir également:
- Inverser une chaine de caractere en c
- Inverser chaine de caractere c - Meilleures réponses
- écrire une fonction qui inverse une chaîne de caractères en c - Meilleures réponses
- Aide pour inverser une chaîne de caractère en C ✓ - Forum - C
- Inverser une chaîne de caractère algorithme - Forum - Pascal
- Algorithme, inverser mots d'une phrase - Forum - Programmation
- Inverser une chaine de caractere ✓ - Forum - Linux / Unix
- Algorithme qui inverse les lettres des mots - Forum - Python
1 réponse
fiddy
6 janv. 2014 à 12:14
- Messages postés
- 11067
- Date d'inscription
- samedi 5 mai 2007
- Statut
- Contributeur
- Dernière intervention
- 23 avril 2022
6 janv. 2014 à 12:14
Bonjour,
Vu toutes les erreurs, je te conseille de revoir les bases.
void main() => int main(void)
Il faut donc un return 0; à la fin du main().
void inverser_chaine()
Tu n'as pas le droit de définir plusieurs fonctions avec des arguments différents. Le C n'est pas du C++. Il faut donc un nom différent.
mot = strlen(chaine);
chaine n'est pas défini. Il faut faire scanf("%19s", chaine); avant.
mot_2 = mot/2;
A quoi sert mot_2 ? Tu ne t'en sers pas.
printf("Entrez le mot : ", mot);
Plutôt : printf("Entrez le mot : "); ou alors printf("Entrez le mot : %d", mot); pour afficher le nombre de lettres de chaine (qui vaudra n'importe quoi car chaine n'est pas initialisé).
system("pause");
Non portable. Utilise plutôt getchar(); Il faudrait d'ailleurs le mettre deux fois pour éliminer le "\n" résidant dans le buffer clavier (reste du scanf("%s", chaine);)
Dans void inverser_chaine(char chaine[])
while(i<mot_2)
i vaut 0, mot_2 vaut 0. 0 n'est pas inférieur à 0, donc la boucle ne sera jamais réalisée...
temp = chaine[mot-1-i];
mot vaut 0, i vaut 0. Donc temp=chaine[-1] => Erreur.
return;
Il sert à rien ton return; Tu es dans un void...
system("pause");
Tout ce qui est placé après le return ne sert à rien puisque cela ne sera jamais exécuté.
Je n'ai même pas regardé si l'algorithme était cohérent. Corrige déjà tout ça. Poste ton nouveau code avec indentation dans la balise "code c" (situé à droite du bouton "souligné").
Vu toutes les erreurs, je te conseille de revoir les bases.
void main() => int main(void)
Il faut donc un return 0; à la fin du main().
void inverser_chaine()
Tu n'as pas le droit de définir plusieurs fonctions avec des arguments différents. Le C n'est pas du C++. Il faut donc un nom différent.
mot = strlen(chaine);
chaine n'est pas défini. Il faut faire scanf("%19s", chaine); avant.
mot_2 = mot/2;
A quoi sert mot_2 ? Tu ne t'en sers pas.
printf("Entrez le mot : ", mot);
Plutôt : printf("Entrez le mot : "); ou alors printf("Entrez le mot : %d", mot); pour afficher le nombre de lettres de chaine (qui vaudra n'importe quoi car chaine n'est pas initialisé).
system("pause");
Non portable. Utilise plutôt getchar(); Il faudrait d'ailleurs le mettre deux fois pour éliminer le "\n" résidant dans le buffer clavier (reste du scanf("%s", chaine);)
Dans void inverser_chaine(char chaine[])
while(i<mot_2)
i vaut 0, mot_2 vaut 0. 0 n'est pas inférieur à 0, donc la boucle ne sera jamais réalisée...
temp = chaine[mot-1-i];
mot vaut 0, i vaut 0. Donc temp=chaine[-1] => Erreur.
return;
Il sert à rien ton return; Tu es dans un void...
system("pause");
Tout ce qui est placé après le return ne sert à rien puisque cela ne sera jamais exécuté.
Je n'ai même pas regardé si l'algorithme était cohérent. Corrige déjà tout ça. Poste ton nouveau code avec indentation dans la balise "code c" (situé à droite du bouton "souligné").