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

Fermé
samypyka Messages postés 2 Date d'inscription samedi 19 septembre 2015 Statut Membre Dernière intervention 19 septembre 2015 - Modifié par NHenry le 19/09/2015 à 13:09
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 19 sept. 2015 à 17:37
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 15185 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 8 janvier 2025 351
19 sept. 2015 à 13:12
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 samedi 19 septembre 2015 Statut Membre Dernière intervention 19 septembre 2015
19 sept. 2015 à 13:26
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 15185 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 8 janvier 2025 351
19 sept. 2015 à 15:35
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
Modifié par fiddy le 19/09/2015 à 17:37
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