Yop!
Bon voilou, je ne suis pas fortiche dans la manipulation de fichiers ^^
J'ai un fichier qui contient des lignes de suite de nombre: 000112033011140000...en tout 144 nombres
en fait c'est un jeu qui lit mon fichier .lvl, j'ai ma fenetre qui est diviser en 144 cases (je suis avec la librairie SDL), et donc je lis mon fichier, les 144 nombres, qui rentre les un a la suite des autres dans les 144 cases avec 2 for imbriquer pour faire longeur*largeur! enfin bref lol
Le fait est que le niveau 1 et ses 144 chiffres se trouve dans la ligne 1 de mon fichier, le niveau 2 se trouve dans la ligne 2, etc etc
Comment faire pour ligne une ligne dans un fichier, jouer, puis quand mon niveau est fini, j'aimerais aller lire la ligne 2, la ligne 3, etc etc ???
en fait comment on lit un fichier ligne par ligne quoi ^^
mon code:
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include "constantes.h"
#include "fichiers.h"
int chargerNiveau(int niveau[][NB_BLOCS_HAUTEUR]); // Prototype
int sauvegarderNiveau(int niveau[][NB_BLOCS_HAUTEUR]); // Prototype
int chargerNiveau(int niveau[][NB_BLOCS_HAUTEUR]) // Le C ne devine pas qu'il s'agit d'un tableau à 2 dimensions, il faut lui donner au moins la taille de la 2nd dimension!
{
FILE* fichier = NULL;
char ligneFichier[NB_BLOCS_LARGEUR * NB_BLOCS_HAUTEUR + 1] = {0}; // On crée un tableau de char pour stocker le résultat du chargement du niveau temporaire
int i = 0, j = 0;
fichier = fopen("niveaux/niveaux.lvl", "r"); // Ouverture du fichier en lecture seule
if (fichier == NULL)
{
return 0;
}
fgets(ligneFichier, NB_BLOCS_LARGEUR * NB_BLOCS_HAUTEUR + 1, fichier); // Le fichier contient une ligne de suite de nombres, on va donc la lire avec un fgets
// On sait que les 12 premiers caractères représentent la première ligne, les 12 suivants la secondes,...
for (i = 0 ; i < NB_BLOCS_HAUTEUR ; i++)
{
for (j = 0 ; j < NB_BLOCS_LARGEUR ; j++)
{
switch (ligneFichier[(i * NB_BLOCS_LARGEUR) + j])
{
// Ce sont des lettres qui sont stockéees dans le fichier, 0 est stockées comme le caractère ASCII '0', et sa valeur n'est pas 0!
// Pour analyser le fichier, il faut tester avec un case '0' et non un case 0.
// Le switch fait la conversion '0' -> 0,...et place tout dans le tableau carte(niveau dans la fonction)
case '0':
niveau[j][i] = 0;
break;
case '1':
niveau[j][i] = 1;
break;
case '2':
niveau[j][i] = 2;
break;
case '3':
niveau[j][i] = 3;
break;
case '4':
niveau[j][i] = 4;
break;
}
}
}
fclose(fichier);
return 1;
}
merci d'avance