A voir également:
- Probleme de programmation en C
- Application de programmation - Guide
- Mettre en veille un programme - Guide
- Programmation logo tortue télécharger - Télécharger - Études & Formations
- Ce programme est écrit en python ✓ - Forum Python
11 réponses
Hello !
La fonction scanf nécessite une référence de la variable à modifier.
Il faut donc écrire :
scanf("%d", &tab2[count]);
ou, de manière équivalente :
scanf("%d", tab2+count);
Take care !
La fonction scanf nécessite une référence de la variable à modifier.
Il faut donc écrire :
scanf("%d", &tab2[count]);
ou, de manière équivalente :
scanf("%d", tab2+count);
Take care !
NoWiS
Messages postés
16
Date d'inscription
vendredi 27 août 2004
Statut
Membre
Dernière intervention
15 octobre 2004
27 août 2004 à 23:36
27 août 2004 à 23:36
ho la boullette....
Merci beaucoups pour la reponse.
Merci beaucoups pour la reponse.
You're welcome ! (De rien !)
À noter qu'un compilateur C++ aurait généré une erreur à la compilation. Le type fourni à scanf (int) n'étant pas compatible avec le type attendu (void*). Même si tu ne connais pas le langage C++ (il est bon d'apprendre le C au préalable), tu peux quand même essayer de le compiler en C++ pour voir si tu obtiens une compilation sans erreur ni avertissement, surtout en cas de plantage sévère à l'exécution comme dans ton cas.
Take care !
À noter qu'un compilateur C++ aurait généré une erreur à la compilation. Le type fourni à scanf (int) n'étant pas compatible avec le type attendu (void*). Même si tu ne connais pas le langage C++ (il est bon d'apprendre le C au préalable), tu peux quand même essayer de le compiler en C++ pour voir si tu obtiens une compilation sans erreur ni avertissement, surtout en cas de plantage sévère à l'exécution comme dans ton cas.
Take care !
je n'ai pas compris l'utilisation de double pointeurs
exp: deftype struct { int elem ;
char nom; }ab;
(...)
ab **A;
aidez moi
merci
exp: deftype struct { int elem ;
char nom; }ab;
(...)
ab **A;
aidez moi
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
NoWiS
Messages postés
16
Date d'inscription
vendredi 27 août 2004
Statut
Membre
Dernière intervention
15 octobre 2004
29 août 2004 à 23:23
29 août 2004 à 23:23
j'ai un nouveau probleme.
Ce programme doit servir a compter le nombre de caractere que l'utilisateur entre dans les chaines de caractere.
Le probleme se situe au niveau de la premiere utilisation de la fonction compte().
cette ligne pour etre plus précis :
-----taille1=compte(*chaine1, MAX);
Le programme me compile, mais ca bug.
Merci de votre aide ;)
Ce programme doit servir a compter le nombre de caractere que l'utilisateur entre dans les chaines de caractere.
Le probleme se situe au niveau de la premiere utilisation de la fonction compte().
cette ligne pour etre plus précis :
-----taille1=compte(*chaine1, MAX);
Le programme me compile, mais ca bug.
#include <stdio.h> #include <stdlib.h> #define MAX 20 char *chaine1, *chaine2; int taille1, taille2, count, total; int compte(char *x1, int taille); int main() { if( ((chaine1=(char *) malloc(MAX))==NULL) || ((chaine2=(char *) malloc(MAX))==NULL) ) { puts("Probleme d'allocation de mémoire"); exit(1); } puts("Entrer votre nom"); gets(chaine1); taille1=compte(*chaine1, MAX); puts("Entrer votre prénom"); gets(chaine2); taille2=compte(*chaine2, MAX); printf("\nVotre nom possede %d caracteres et votre prenom en possede %d.\n Donc un total de %d caractere\n\n", taille1, taille2, taille1+taille2); system("PAUSE"); return 0; } int compte(char *x1, int taille) { total=0; for(count=0; count<taille; count++) { if( *(x1+count) != NULL ) total++; } return total; }
Merci de votre aide ;)
Hello !
Conseil :
Ne jamais faire d'allocation mémoire dans une expression conditionnelle.
Dans ton code, l'allocation mémoire de chaine2 ne se fait que si chaine1 == NULL . Donc, si l'allocation mémoire de chaine1 réussit, chaine2 ne possède pas de mémoire allouée. La suite tu la devines...
Essaie le code suivant :
#include <stdio.h>
#include <stdlib.h>
#define MAX 20
int taille1, taille2, count, total;
int compte(char *x1, int taille);
int main()
{
char* chaine1 = (char*) malloc(MAX);
char* chaine2 = (char*) malloc(MAX);
if (chaine1 == NULL || chaine2 == NULL)
{
puts("Probleme d'allocation de mémoire");
exit(1);
}
/* le reste ne change pas */
Remarques :
1) Pour compter la longueur d'une chaîne de caractères, tu peux utiliser la fonction strlen.
2) Déclare Total dans la fonction compte, c'est mieux.
Take care !
Conseil :
Ne jamais faire d'allocation mémoire dans une expression conditionnelle.
Dans ton code, l'allocation mémoire de chaine2 ne se fait que si chaine1 == NULL . Donc, si l'allocation mémoire de chaine1 réussit, chaine2 ne possède pas de mémoire allouée. La suite tu la devines...
Essaie le code suivant :
#include <stdio.h>
#include <stdlib.h>
#define MAX 20
int taille1, taille2, count, total;
int compte(char *x1, int taille);
int main()
{
char* chaine1 = (char*) malloc(MAX);
char* chaine2 = (char*) malloc(MAX);
if (chaine1 == NULL || chaine2 == NULL)
{
puts("Probleme d'allocation de mémoire");
exit(1);
}
/* le reste ne change pas */
Remarques :
1) Pour compter la longueur d'une chaîne de caractères, tu peux utiliser la fonction strlen.
2) Déclare Total dans la fonction compte, c'est mieux.
Take care !
NoWiS
Messages postés
16
Date d'inscription
vendredi 27 août 2004
Statut
Membre
Dernière intervention
15 octobre 2004
30 août 2004 à 10:20
30 août 2004 à 10:20
Merci ;)
Par contre le programme rencontre toujours le meme probleme.
Par contre le programme rencontre toujours le meme probleme.
Hello !
Effectivement, il y a un autre problème tout aussi grave.
L'utilisation de la fonction compte est incorrecte. Il te faut passer un pointeur et non un char. Ecrire :
taille1=compte(chaine1, MAX);
...
taille2=compte(chaine2, MAX);
Je suis étonné que ton compilateur ne râle pas. Il est temps de penser à le remplacer.
Take care !
Effectivement, il y a un autre problème tout aussi grave.
L'utilisation de la fonction compte est incorrecte. Il te faut passer un pointeur et non un char. Ecrire :
taille1=compte(chaine1, MAX);
...
taille2=compte(chaine2, MAX);
Je suis étonné que ton compilateur ne râle pas. Il est temps de penser à le remplacer.
Take care !
NoWiS
Messages postés
16
Date d'inscription
vendredi 27 août 2004
Statut
Membre
Dernière intervention
15 octobre 2004
30 août 2004 à 19:44
30 août 2004 à 19:44
Ok merci.
Pour info, mon compilateur est DEV-C++.
Pour info, mon compilateur est DEV-C++.