Probleme d'execution d'un programme en C

Fermé
melanie - 26 nov. 2009 à 19:50
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 27 nov. 2009 à 00:21
Bonjour,
j'ai fait un programme en langage c et à chaque fois que je l'execute un message s'affiche comme quoi mon
programme a rencontré un probleme et doit fermer...
merci d'essayer de m'aider je vous donne mon programme:

#include<stdio.h>
#include<stdlib.h>

int ecrire (char *nom,int *tab,int taille){
int i;
FILE *f=fopen(nom,"w");

fprintf(f,"%d\n",taille);

for(i=0;i<taille;i++){
fprintf(f,"%d\n",tab[i]);
}

fclose(f);

return 0;
}










int main (int argc,char **argv){
int i;
int *tab;
int taille;

srand(10);

printf("Entrez la taille du tableau :\n");
scanf("%d",&taille); /*jusque là il arrive à executer mais il n'arrive pas à faire la suite */

tab=(int *)malloc(taille*sizeof (int));
if(tab==NULL) return 0;

for(i=0;i<taille;i++){
tab[i]=rand()%1000;
}

ecrire(argv[1],tab,taille);
system("pause"); /* je l'utilise à cause de DEV C++*/

return 0;
}

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
26 nov. 2009 à 23:44
Salut,
J'ai pas tout regardé, mais j'ai déjà vu une erreur :
dans la fonction main :
mets int tab tout simplement au lieu int *tab;

Cdlt
0
topcoder Messages postés 81 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 14 décembre 2012 10
26 nov. 2009 à 23:57
Voici ma proposition :
#include<stdio.h>
#include<stdlib.h>

int ecrire (char *nom,int *tab,int taille){
int i;
FILE *f=fopen(nom,"w");

fprintf(f,"%d\n",taille);

for(i=0;i<taille;i++){
fprintf(f,"%d\n",tab[i]);
}

fclose(f);

return 0;
}

int main(){
int tab[3]={7,9,9};
ecrire("uuuuu.txt",tab,5);
return 0;
}
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
27 nov. 2009 à 00:21
ceci pourrait aider au débuggage :

FILE *f=fopen(nom,"w");

il faudrait vérifier que le pointeur n'est pas NULL avant d'écrire dans ce fichier !

De plus, en parlant de vérification de pointeur NULL,

if(tab==NULL) return 0;

au lieu de quitter directement un petit message servirait à voir s'il y a eu un problème à cet endroit. (Idem pour le test que je viens de te conseiller de mettre)



d'autre part n'oublie pas de libérer la mémoire allouée avec malloc avec la commande free !
0