Probleme non compris en chargant un fichier !!!

SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013 - 11 avril 2004 à 19:30
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013 - 21 avril 2004 à 07:43
Bonjour tout le monde, voila mon probleme :

int loadtablo()
{

static int i = 1;
char caractere;
FILE *fichier; // Déclare le fichier

fichier = fopen("tableau1.txt","r"); // Ouvre le fichier

while (!feof(fichier)) {
fscanf (fichier,"%s",&caractere); // lecture du fichier
caractere = caractere - 48;
g_BoardArray[i] = caractere;
i++;

}

fclose (fichier);
ShowMessage("fin de l'initilisation");
}

En fait il a deux choe que je ne comprend pas c ll'utilité de declarer i en static "static int i = 1;" et l'obligation de faire une pause a la fin "ShowMessage("fin de l'initilisation");"
G droit a un message d'erreur si je les change !!!
Pas a la compilation mais durant l'execution du programme !!
Merci si vous pouviez m'expliquer pourquoi !!!

7 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
11 avril 2004 à 21:06
oui, vu comme ca i n'a aucune utilite en static
0
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
12 avril 2004 à 15:28
Une question : quel est la taille de ton tablea g_BoardArray[] qui si j'en crois ton code n'est pas alloué dynamiquement. Et aussi une remarque, en C les indices commence à 0 donc initialise i à 0 et pas à 1. (à moins que ce sois volontaire pour ton prog...)

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
0
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013
14 avril 2004 à 17:04
ha oui g mit ca en debut de prog
int g_BoardArray[50][50];
pour l'indice je m'en suis apercu aprés et je commence a 0 effectivement et depuis g modifier le truc et ca deviens

while (!feof(fichier)) {
fscanf (fichier,"%s",&caractere); // lecture du fichier
caractere = caractere - 48;
g_BoardArray[x][y] = caractere;
x++;
if (x == 24 ) {
x = 0;
y++;
}
}
Mais j'ai tjour pas compris pourquoi x et y doivent etre declaré en static ni pourquoi le programme plante si je ne fait pas de pause a la fin !!!!
En fait comme ca ca marche mais j'ai trouvé ca a tatons et si je me trouve dans le meme cas dans le futur je tiens pas a passer 2 h a tout essayer pour que ca marche !!!

Merci en tout cas de vous creuser la tete :+) !!!
0
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
14 avril 2004 à 19:53
tu declare un tableau 50*50 mais qui te dit que c'est suffissant par rapport a la taille de ton fichier?
en suite, remplace le %s par un %c et voit ensuite

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013
16 avril 2004 à 14:27
Pour la taille du tableau c'est bon le fichier fait 12*12 et j'ai mit %s pour lire les mots.
En fait g pas de probleme en faisant comme ca ca marche, j'ai ni probleme de tableau saturé ou de lecture des données, c'est juste que j'arrive pas a comprendre pourquoi je doit faire comme ca !!
Lol
Bon je reconnais que je me fait chier pour rien mais c'est etrange quand meme !!!
0
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
16 avril 2004 à 19:22
quand tu ecris :

fscanf (fichier,"%s",&caractere); // lecture du fichier
caractere = caractere - 48;

caractere est un char, c'est pour cela que je t'ai fait la remarque sur le %c. Sinon un char* sur une chaine de caractère sera plus approprié 'a condition de fi,ier par le caractère null)

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
0
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013
21 avril 2004 à 07:43
Ha oui lol !!
Désolé javé po compris, en fait je lit des chiffre et comme c des caractere je suis obligé de retrancher 48, je pourrait surement faire plus simple mais la depuis j'ai carrement changer de systeme, mieux concu mais le mystere persiste !!!
0
Rejoignez-nous