Probleme d'execution de mon programme en c sur code blocks
Fermé
salw2017
Messages postés
1
Date d'inscription
vendredi 3 novembre 2017
Statut
Membre
Dernière intervention
3 novembre 2017
-
Modifié le 5 nov. 2017 à 18:14
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 5 nov. 2017 à 18:31
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 5 nov. 2017 à 18:31
A voir également:
- Probleme d'execution de mon programme en c sur code blocks
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Code::blocks download - Télécharger - Langages
- Frequence programme national ✓ - Forum Messagerie
- Programme demarrage windows 10 - Guide
- Code asci - Guide
1 réponse
mamiemando
Messages postés
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
5 nov. 2017 à 18:31
5 nov. 2017 à 18:31
Bonjour,
De nombreuses choses sont incorrectes :
-
- Tu ne peux pas stocker une chaîne de caractère dans un caractère. C'est pourtant ce que tu écris ici
Pour apprendre à lire / écrire des chaînes de caractère je t'invite à lire ceci :
https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/15765-les-chaines-de-caracteres
Voici un exemple minimal :
#include <stdio.h>
int main() {
char chaine[100];
printf("chaine ? ");
scanf("%s", chaine);
printf("chaine = %s\n", chaine);
return 0;
}
-
- ta fonction
- il faut contrôler que le fichier est ouvert (et ne le fermer que dans ce cas). Voici à quoi ça ressemble :
Note que tu peux lire un fichier texte comme tu le ferais avec l'entrée standard (
Utiliser
- Pour le moment, la saisie n'est pas enregistrée dans le fichier
Bonne chance
De nombreuses choses sont incorrectes :
-
getcheet
getchne sont pas des fonctions standards (ça compile sous windows, mais pas sous linux). Je t'invite à plutôt utiliser
scanf
- Tu ne peux pas stocker une chaîne de caractère dans un caractère. C'est pourtant ce que tu écris ici
scanf("%s",&nom); puisque nomest de type
char.
Pour apprendre à lire / écrire des chaînes de caractère je t'invite à lire ceci :
https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/15765-les-chaines-de-caracteres
Voici un exemple minimal :
#include <stdio.h>
int main() {
char chaine[100];
printf("chaine ? ");
scanf("%s", chaine);
printf("chaine = %s\n", chaine);
return 0;
}
-
case1désigne ici un label (utilisable avec
goto). Comme il n'y a pas de
goto, il ne sert à rien. En tout cas rien à voir avec
switchqui s'écrirait comme ceci :
int i = 0
switch (i) {
case 0:
//...
break;
case 1:
//...
break;
default:
// ...
break;
}
- ta fonction
mainest sensée finir par un
return 0(la valeur 0 signifie que le programme a fini avec succès, on écrit aussi parfoit
EXIT_SUCCESS).
- il faut contrôler que le fichier est ouvert (et ne le fermer que dans ce cas). Voici à quoi ça ressemble :
const char * filename = "mon_fichier.txt";
FILE * fp = fopen(filename, "w");
if (fp) {
fprintf(fp, "mon texte");
// ...
fclose(fp);
} else {
fprintf(stderr, "Cannot open %s", filename);
}
Note que tu peux lire un fichier texte comme tu le ferais avec l'entrée standard (
stdin). En effet
scanf(...)revient à faire
fscanf(stdin, ...). En particulier tu peux très bien lire un entier comme suit :
const char * filename = "mon_fichier.txt";
FILE * fp = fopen(filename, "r");
int i;
if (fp) {
fscanf(fp, "%d", &i);
fclose(fp);
} else {
fprintf(stderr, "Cannot open %s", filename);
}
Utiliser
freadrevient à lire le contenu du fichier comme s'il s'agissait d'un fichier binaire. Vu que tu sembles découvrir le C, je pense que ce sera plus facile pour toi de manipuler un format texte quitte à le lire ensuite ligne par ligne avec
getline.
- Pour le moment, la saisie n'est pas enregistrée dans le fichier
etudiant.dat. La lecture qui s'ensuit ne marchera donc pas.
Bonne chance