Fichier texte a partir de tableau (C)
Résolu
mich62120
Messages postés
631
Date d'inscription
Statut
Membre
Dernière intervention
-
mich62120 Messages postés 631 Date d'inscription Statut Membre Dernière intervention -
mich62120 Messages postés 631 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaiterai remplir un fichier texte avec des valeurs comprises dans un tableau deux dimensions.
Voici mon scripte:
#include <stdio.h>
/*void remplirBDD();*/
int main(){
int i;
/*remplirBDD();*/
FILE* file;
char filename[256];
int tab[25][2];
int tmp;
/*remplissage bidon*/
for(tmp=0 ; tmp<25 ; i++ ){
tab[tmp][1]=tmp;
tab[tmp][2]=tmp*5;}
sprintf((char *) &filename,"create.txt");
for( i=0 ; i<25 ; i++ )
{
file = fopen(filename,"a");
if (file) fprintf(file,"%d %d\n",tab[i][1],tab[i+1][2]);
else fprintf(stderr,"Erreur : ne peut pas ouvrir %s\n",filename);
fclose(file);
}
return 1;}
A chaque execution j'ai une fenete DOS qui s'ouvre (ou je peux strictement rien faire )et cela reste bloqué.Le fichier ne se crée même pas.
Je ne vois pas du tout d'ou peut venir le problème si vous pouvez m'aider
Je souhaiterai remplir un fichier texte avec des valeurs comprises dans un tableau deux dimensions.
Voici mon scripte:
#include <stdio.h>
/*void remplirBDD();*/
int main(){
int i;
/*remplirBDD();*/
FILE* file;
char filename[256];
int tab[25][2];
int tmp;
/*remplissage bidon*/
for(tmp=0 ; tmp<25 ; i++ ){
tab[tmp][1]=tmp;
tab[tmp][2]=tmp*5;}
sprintf((char *) &filename,"create.txt");
for( i=0 ; i<25 ; i++ )
{
file = fopen(filename,"a");
if (file) fprintf(file,"%d %d\n",tab[i][1],tab[i+1][2]);
else fprintf(stderr,"Erreur : ne peut pas ouvrir %s\n",filename);
fclose(file);
}
return 1;}
A chaque execution j'ai une fenete DOS qui s'ouvre (ou je peux strictement rien faire )et cela reste bloqué.Le fichier ne se crée même pas.
Je ne vois pas du tout d'ou peut venir le problème si vous pouvez m'aider
A voir également:
- Fichier texte a partir de tableau (C)
- Fichier bin - Guide
- Tableau word - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des quatre premières colonnes. - Guide
4 réponses
Ce sprintf() ne peut que planter :
sprintf((char *) &filename,"create.txt");
écris plutôt : strcat( filename , "create.txt" );
Tu peux ouvrir ton fichier 1 seule fois avant la boucle for(), et le refermer 1 seule fois après cette même boucle
En C, les indices de tableau commencent à 0 et non à 1 (remarque)
Slts !
sprintf((char *) &filename,"create.txt");
écris plutôt : strcat( filename , "create.txt" );
Tu peux ouvrir ton fichier 1 seule fois avant la boucle for(), et le refermer 1 seule fois après cette même boucle
En C, les indices de tableau commencent à 0 et non à 1 (remarque)
Slts !
Bonjour,
En fait strcat plantera aussi dans ce cas à moins de mettre un '\0' en premier caractère dans filename, mais de toute façon ce n'est pas une concaténation que tu veux faire.
Le point fautif est le '&' dans ton sprintf, et c'est probablement pour cela que tu as du caster en (char *) car ton compilo se retrouve avec un char ** pour un paramètre de type char *.
Voilou.
Oui sinon, idem, ouvrir le fichier une seule fois en mode écriture (w), tout écrire, fermer.
et ++ aussi, un tableau de taille 2 (par exemple) possède deux éléments, a[0] et a[1];
M.
En fait strcat plantera aussi dans ce cas à moins de mettre un '\0' en premier caractère dans filename, mais de toute façon ce n'est pas une concaténation que tu veux faire.
Le point fautif est le '&' dans ton sprintf, et c'est probablement pour cela que tu as du caster en (char *) car ton compilo se retrouve avec un char ** pour un paramètre de type char *.
Voilou.
Oui sinon, idem, ouvrir le fichier une seule fois en mode écriture (w), tout écrire, fermer.
et ++ aussi, un tableau de taille 2 (par exemple) possède deux éléments, a[0] et a[1];
M.