Mon Programme ce bloque! dés que j'execute !!
Fermé
med.ben235
Messages postés
10
Date d'inscription
dimanche 13 avril 2014
Statut
Membre
Dernière intervention
27 avril 2014
-
Modifié par med.ben235 le 24/04/2014 à 21:28
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 27 avril 2014 à 00:42
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 27 avril 2014 à 00:42
A voir également:
- Mon Programme ce bloque! dés que j'execute !!
- Code puk bloqué - Guide
- Pavé tactile bloqué - Guide
- Programme demarrage windows 10 - Guide
- Compte gmail bloqué - Guide
- Telephone bloque - Guide
1 réponse
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
25 avril 2014 à 13:31
25 avril 2014 à 13:31
C'est plus un problème de code que de mémoire.
#include<conio.h>
#include<windows.h>
Non standard. A enlever.
int main()
Le bon prototype est : int main(void)
scanf("%s",repo);
repo n'est pas alloulé. Ca risque de planter. Soit tu fais : char repo[MAX]; en définissant MAX, soit tu fais un malloc() pour définir la taille à l'exécution.
if (*x==*repo)
Cela est identique à : x[0] == repo[0]. Autrement dit tu compares le premier caractère. Est-ce ce que tu veux ? Pour comparer toute la chaîne, il faut utiliser la fonction strcmp().
printf("%d",score);
N'oublie pas de mettre '\n' après pour forcer l'affichage avant la fin du programme.
getch();
Non standard. Utilise plutôt getchar() (attention à bien vider le buffer clavier avant), ou tout simplement system("pause");
Tu as oublié de mettre les free()...
char** tab=(char**)malloc((100000)*sizeof(char*));
Pour info, le cast (char**) est superflu. Il est même conseillé de ne pas le mettre.
if(fp==NULL){};
A quoi sert le ; ? Pas besoin.
while(fgets(parcours,BUFSIZ,fp)!=NULL)
{
temp[j]=(char*)malloc((strlen(parcours))*sizeof(char));
strcpy(temp[j],parcours);
j++;
}
Il faut faire un contrôle de la valeur de j. Il faut s'assurer que j est bien inférieur au nombre de lignes de temp.
Ce n'est pas strlen(parcours) qu'il faut mettre mais strlen(parcours)+1 pour laisser de la place au '\0'.
srand(time(NULL));
A ne mettre qu'une fois.
char** tab=(char**)malloc((100000)*sizeof(char*));
Toujours faire un contrôle pour voir si le malloc() à renvoyer ou pas un NULL. Sinon 100000 est une assez grande valeur. Si ça ne passe pas, il faudra plutôt utiliser des listes chaînées.
Voilà pour les erreurs qui sautent aux yeux. Corrige tout ça, reposte ton programme et merci d'utiliser la balise "code" situé à droite du bouton "souligné" et sélectionne le bouton "C" pour garder l'indentation. Sinon c'est illisible.
Cdlt,
#include<conio.h>
#include<windows.h>
Non standard. A enlever.
int main()
Le bon prototype est : int main(void)
scanf("%s",repo);
repo n'est pas alloulé. Ca risque de planter. Soit tu fais : char repo[MAX]; en définissant MAX, soit tu fais un malloc() pour définir la taille à l'exécution.
if (*x==*repo)
Cela est identique à : x[0] == repo[0]. Autrement dit tu compares le premier caractère. Est-ce ce que tu veux ? Pour comparer toute la chaîne, il faut utiliser la fonction strcmp().
printf("%d",score);
N'oublie pas de mettre '\n' après pour forcer l'affichage avant la fin du programme.
getch();
Non standard. Utilise plutôt getchar() (attention à bien vider le buffer clavier avant), ou tout simplement system("pause");
Tu as oublié de mettre les free()...
char** tab=(char**)malloc((100000)*sizeof(char*));
Pour info, le cast (char**) est superflu. Il est même conseillé de ne pas le mettre.
if(fp==NULL){};
A quoi sert le ; ? Pas besoin.
while(fgets(parcours,BUFSIZ,fp)!=NULL)
{
temp[j]=(char*)malloc((strlen(parcours))*sizeof(char));
strcpy(temp[j],parcours);
j++;
}
Il faut faire un contrôle de la valeur de j. Il faut s'assurer que j est bien inférieur au nombre de lignes de temp.
Ce n'est pas strlen(parcours) qu'il faut mettre mais strlen(parcours)+1 pour laisser de la place au '\0'.
srand(time(NULL));
A ne mettre qu'une fois.
char** tab=(char**)malloc((100000)*sizeof(char*));
Toujours faire un contrôle pour voir si le malloc() à renvoyer ou pas un NULL. Sinon 100000 est une assez grande valeur. Si ça ne passe pas, il faudra plutôt utiliser des listes chaînées.
Voilà pour les erreurs qui sautent aux yeux. Corrige tout ça, reposte ton programme et merci d'utiliser la balise "code" situé à droite du bouton "souligné" et sélectionne le bouton "C" pour garder l'indentation. Sinon c'est illisible.
Cdlt,
25 avril 2014 à 22:12
mais mon programme marche seulement avec une fichier de 6 ligne ....
pour une fichier qui contient beaucoup des ligne ?
25 avril 2014 à 22:15
25 avril 2014 à 22:31
est ce que vous pouvez m'aidé a trouvé un code pour déplacer une fichier txt dans un tableau (ligne par ligne)
et merci autre foi
26 avril 2014 à 21:42
Déjà, corrige le programme comme je t'ai dit et reposte le entre deux balises "code".
27 avril 2014 à 00:22
j'ai déja demander au prof et il m'a dit que c'est seulement un probleme de mémoire ! alors s'il vous plai est ce que vous pouvez m'aider à résoudre ce probléme :)