Probleme d'execution d'un programme en C

melanie -  
Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   -
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;
}
Configuration: Windows XP Internet Explorer 7.0

3 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
  2. topcoder Messages postés 82 Date d'inscription   Statut Membre Dernière intervention   10
     
    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
  3. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
     
    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