Chaine de caractères, tableau... problème

samypyka Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai voulu créer un programme dans lequel il y a une fonction et un programme principal.

Dans le programme principal, je demande le nombre de notes à l'utilisateur et j'appelle la fonction.

Dans la fonction, je demande à l'utilisateur de rentrer les notes et le nom.

Mon programme compile, mais ce n'est pas pour autant qu'il fonctionne... J'ai besoin d'aide pour savoir qu'elle est mon erreur.

Voici mon programme (sur Code::blocks windows 10) :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
void stock(char *name,double *notes, int *nombre_de_notes);
 
int main(int argc, char *argv[])
{
    char nom[100];
    double notes[10];
    int *nombre_de_notes;
 
    printf("Nombre de notes de l'etudiant \n");
    scanf("%d",nombre_de_notes);
 
    stock(nom, notes, nombre_de_notes);
 
    return 0;
}
 
void stock(char *nom, double *notes, int *nombre_de_notes)
{
    int i;
 
    printf("Nom de l'etudiant :\n");
    scanf("%s",nom);
 
    printf("Ses notes :\n");
 
    for(i=0;i<*nombre_de_notes;i++)
    {
        scanf("%lf",notes[i]);
    }
}

Merci de votre soutien.

Cordialement.



EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

3 réponses

NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
Je ne connais pas beaucoup de C (enfin, j'ai un peu perdu).
Mais si l'utilisateur saisit plus de 10 notes, un buffer overflow guette.
Si le nom de l'utilisateur dépasse 99 caractères, ton programme part en sucette.

Tu dis que ton programme ne fonctionne pas, mais peux-tu détaillé ? (désiré, obtenu, ...)
0
samypyka Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Dans mon cas, je reste dans les limites de mes tableaux que j'ai fixé. En bref, j'évite tout problème.

Mon programme ne fonctionne pas entièrement. Le printf de la ligne 13, et le scanf de la ligne 14 fonctionne. Il apparait dans la fenêtre après avoir demandé l'exécution de mon programme. Or, après avoir rentré la valeur dans scanf, Windows me dit que le programme à cesser de fonctionner.

Je cherche comment résoudre ce problème. Je ne trouve pas pour l'instant.
0
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
int *nombre_de_notes;

C'est bien, tu as déclaré ton pointeur, mais tu l'assignes où ?
Car le scanf en fait que remplacer la valeur pointée.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

int *nombre_de_notes;
Pourquoi déclarer un pointeur ? Inutile.
Autant faire :
int nombre_de_notes;


De fait, le scanf() devient :
scanf("%d",&nombre_de_notes);


Et l'appel à la fonction :
stock(nom, notes, &nombre_de_notes);


Cdlt,

Google is your friend
0