C'est mon premier message ici. Je suis désespéré de pouvoir enfin travailler sur mon nouveau poste, mais je bute sur erreurs après erreurs. Là, j'ai installé MinGW, compilateur censé m'aider à compiler du C/C++ sur Windows 10. Je l'ai fait hier, et testé, ça a très bien marché (pour les curieux, j'ai vu cette vidéo https://www.youtube.com/watch?v=40MWdFAGTzg).
Aujourd'hui, j'ai essayé d'écrire un nouveau code pour le compiler, mais il y a une erreur.
Explication. Normalement, j'ai un code qui s'appelle par exemple main.c.
Dans le terminal, je compile avec gcc (gcc -o c.exe main.c => veut dire qu'on génère un exécutable appelé c )
Puis je fais ./c.exe pour voir le résultat.
Donc pour ce programme...
#include <stdio.h>
#include <stdlib.h>
int serie_harmonique(int N){
int res=1;
if (N==res){
return res;
}
else {
for(int i=2;i<=N;i++) {
res=res+(1/i);
}
}
return res;
}
int main()
{
int a=2;
int resultat = serie_harmonique(a);
printf("%d\n", resultat);
}
Je fais
gcc -o serie_harmonique.exe main.c
./serie_harmonique.exe
Et je me retrouve avec ça
Sachant qu'un peu plus tôt, j'avais réessayé l'exemple de la veille, et ça marchait. Je ne comprends pas. J'ai le dossier ouvert à côté qui montre clairement l'éxecutable "serie_harmonique" apparaître, mais je ne peux pas le lancer ! Que faire ?
Edit : ajout du code, merci rouloude. Et correction faite. J'entends ce que tu dis pour les droits d’exécution, mais alors pourquoi la même manœuvre marchait exactement hier et un peu plus tôt dans la journée ? Et dès que je tente un autre code, ça bugue ?
EDIT : Problème résolu par PierreleFou, l'extension .exe se met automatiquement, donc en nommant le fichier executable serie_harmonique.exe dans ma ligne de commande, je créais un fichier serie_harmonique.exe.exe ! Il faut donc écrire "gcc -o executable nomdufichier.c" puis "./executable.exe".
- Edité par winnieThegreedy 21 septembre 2020 à 17:51:48
Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention. Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé. Pour plus d'informations, nous vous invitons à lire les règles générales du forum
Merci de colorer votre code à l'aide du bouton Code
Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: cpp;">Votre code ici</pre>.
Merci de modifier votre message d'origine en fonction.
Normalement en C, on de défini pas de fonction à l’intérieur de fonction !
Pour ton problème on dirait qu'il y a un problème de droit d'exécution, (Je suis toujours sous Windows 7, je n'ai jamais vu ce type de message l'or de l'exécution d'un programme), (j'ai bien un Win10 mais je ne code pas dessus, juste des test de prog).
Et surtout : Utilises le bouton code </> du forum pour poster ton code ! (tu peux modifier ton post, lien modifier en haut à droite du post).
L'exécutable s'appelle serie_harmonique (comme sur la capture d'écran) ou serie_harmonique.exe ?
(Je sais que Windows cache par défaut les extensions, mais justement, sur la capture d'écran on voit les extensions des fichiers source, donc ici l'affichage des extensions est activé, non ?)
Il s'appelle normalement serie_harmonique.exe comme je l'ai généré d'après cette ligne => gcc -o serie_harmonique.exe main.c
Après, c'est vrai que Windows ne montre pas l'extension, mais ça a déjà marché pour d'autres exécutables.
rouloude, oui, le res doit bel et bien être un float et non un int, erreur bête de ma part. Du coup, ce sera printf("%f\n" resultat); et float resultat; dans le main, et des changements à faire aussi dans la fonction.
Il s'appelle normalement serie_harmonique.exe comme je l'ai généré d'après cette ligne => gcc -o serie_harmonique.exe main.c
Après, c'est vrai que Windows ne montre pas l'extension, mais ça a déjà marché pour d'autres exécutables.
Tu veux dire que Windows ne montre pas l'extension des exécutables mais montre l'extension des fichiers sources ? C'est de plus en plus tordu. Je te recommande vraiment de faire afficher toutes les extensions, ainsi tu seras toujours fixé.
Maintenant, si tu as un doute sur les permissions, il faut les vérifier. Clique droit sur le nom de l'exécutable, "propriétés", etc.
J'ai vérifié que cd .\ ne donne pas d'erreur et me laisse sur le dossier courant.
As-tu accès à ton compilateur en invite de commande? Il y a des gens qui parlent de terminal et qui sont dans un IDE comme Visual Studio ou Code::Blocks
As-tu activé l'affichage des extensions? Si oui, vois-tu l'extension '.exe'?
Il y a une autre façon de voir les extensions, c'est de faire encore le clic droit et d'aller à l'option "renommer".
Tu ne changes rien mais tu devrais voir l'extension.
Est-ce que par hasard tu aurais '.exe.exe' dcomme extension? Ça me surprendrait mais on ne sait jamais ...
J'ai renommé un de mes fichier avec une extension '.exe' en effaçant l'extension et cmd ne le reconnait plus (même avec le .\).
Je l'ai renommé de nouveau avec la commande 'ren' en ajoutant '.exe' et ça marche à nouveau.
Quand je compile sous cmd, je ne met jamais l'extension .exe, c'est gcc qui le met pour moi.
Tu n'as rien à perdre à l'essayer ...
Normalement, Windows n'aime pas qu'on change l'extension. Comment fais-tu pour avoir une extension '.c' pour tes sources?
(moi, j'ignore le warning de Windows)
Le Tout est souvent plus grand que la somme de ses parties.
Peut-être suis-je complètement à côté de la plaque mais j'ai l'impression que j'ai rencontré une fois ce problème sous Ubuntu (donc j'utilisais gcc). Je reprenais un code écrit sous Windows 10 et j'avais cette erreur bizarre qui ressemblait à un accès refusé au caractère ....
J'ai effacé les lignes d code correspondantes et je les ai retapées et tout a fonctionné ! Ne me demandez pas pourquoi mais c'est ainsi. Essaie on ne sait jamais !
Le crayon la gomme et le papier sont les meilleurs outils du programmeur !
Merci infiniment à tous pour vos réponses, je vais enfin pouvoir me mettre au travail !!
PierrotLeFou , dès que j'ai lu ta réponse, j'ai su que c'était ça ! Parce qu'une fois j'ai enregistré une image que j'ai appelé image.png au format png ! Dont, image.png.png. J'avais au préalable vérifié que je générais bel et bien un .exe au travers des propriétés, mais je n'arrivais pas à voir le nom complet avec l'extension en renommant (windows...). Du coup, dans ma ligne de commande, ça donne
gcc -o serie_harmonique test.c
puis
./serie_harmonique.exe
Et ça compile. Encore une fois, merci à tous pour votre contribution !
J'éditerai le message du haut comme quoi le problème est résolu
Je n'ai pas vu le message, était-ce "stray character"? Il y a des caractères égarés qu'on ne détecte pas.
Ça m'arrive parfois si je fais un copier-coller de code à partir d'une page web.
- Edité par PierrotLeFou il y a environ 5 heures
Non ce n'était pas ça, moi aussi j'ai ce problème avec des codes copiés depuis Internet.
La le code avait été tapé avec Visual Code sous Windows 10 et devait sans doute être UTF8 ou un truc comme à ça. Je l'avait recopié sous Ubuntu depuis le disque de Windows 10 et l'entête du source devait être incorrecte, pourtant la compilation se passait bien, bizarre, je n'ai pas compris du tout ce qui se passait.
Le crayon la gomme et le papier sont les meilleurs outils du programmeur !
Au passage, pour calculer la série harmonique, il faut faire la boucle en sens inverse.
Tu sais probablement que la série harmonique diverge. Ce que tu calcules converge, parce qu'a partir d'u'un moment, le 1/i qu'on ajoute est négligeable par rapport à la somme.
Compilation du C sur Windows 10
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Le Tout est souvent plus grand que la somme de ses parties.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Le Tout est souvent plus grand que la somme de ses parties.
Le crayon la gomme et le papier sont les meilleurs outils du programmeur !
Le Tout est souvent plus grand que la somme de ses parties.
Le crayon la gomme et le papier sont les meilleurs outils du programmeur !