IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

Saut de ligne fichier texte


Sujet :

SDL

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 96
    Points : 51
    Points
    51
    Par défaut Saut de ligne fichier texte
    Bonsoir, je vous explique mon problème . Je charge et je sauvegarde dans un fichier texte seulement cela se charge que sur une ligne toute les images se rajoutent seulement sur une ligne et impossible d'en rajouter sur la ligne suivante .



    En gros , lorsque j' ai du Cela m'affiche mes images de cette façon là
    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    int chargerNiveau(int niveau[][NB_BLOCS_HAUTEUR])
    {
        FILE* fichier = NULL;
        char ligneFichier[NB_BLOCS_LARGEUR * NB_BLOCS_HAUTEUR + 1] = {0};
        int i = 0, j = 0;
     
          fichier = fopen("niveaux.lvl", "r");
        if (fichier == NULL)
            return 0;
     
        fgets(ligneFichier, NB_BLOCS_LARGEUR * NB_BLOCS_HAUTEUR + 1, fichier);
     
        for (i = 0 ; i < NB_BLOCS_LARGEUR ; i++)
        {
            for (j = 0 ; j < NB_BLOCS_HAUTEUR ; j++)
            {
                switch (ligneFichier[(i * NB_BLOCS_LARGEUR) + j])
                {
                    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;
    }
     
    int sauvegarderNiveau(int niveau[][NB_BLOCS_HAUTEUR])
    {
        FILE* fichier = NULL;
        int i = 0, j = 0;
     
       fichier = fopen("niveaux.lvl", "r");
        if (fichier == NULL)
            return 0;
     
        for (i = 0 ; i < NB_BLOCS_LARGEUR ; i++)
        {
            for (j = 0 ; j < NB_BLOCS_HAUTEUR ; j++)
            {
                fprintf(fichier, "%d", niveau[j][i]);
            }
        }
     
        fclose(fichier);
        return 1;
    }]

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Soucis avec fgets()
    Bonsoir, comme le dis le titre j'ai un soucis avec fgets() . J'ai un fichier dans lequel il y a 11
    11

    Le 1 correspond à une image seulement mon soucis c'est que seulement la première ligne apparait et non la deuxième

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    int chargerNiveau(int niveau[][NB_BLOCS_HAUTEUR])
    {
        FILE* fichier = NULL;
        char ligneFichier[NB_BLOCS_LARGEUR + 2];
        int i = 0, j = 0;
     
          fichier = fopen("niveaux.lvl", "r");
        if (fichier == NULL)
            return 0;
     
       while ( fgets(ligneFichier, sizeof ligneFichier, fichier) != NULL){
     
     
            for (j = 0 ; j < NB_BLOCS_HAUTEUR ; j++)
            {
                niveau[j][i] = ligneFichier[j] - '0';
    	   printf("Ligne : %s" , ligneFichier);
     
            }
    	i++;
        }
     
        fclose(fichier);
        return 1;
    }
    avec NB_BLOCS_HAUTEUR = NB_BLOCS_LARGEUR = 2

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Border Voir le message
    Bonsoir, comme le dit le titre j'ai un soucis avec fgets()
    Bonjour

    Ce code (pris à partir du tien mais dans lequel j'ai enlevé ce qui était inutile pour le test) fonctionne parfaitement. A ce propos tu remarqueras que je l'ai aussi indenté proprement. C'est quand-même la moindre des choses quand on écrit un programme de l'écrire aussi de façon élégante pour en faciliter la lecture (et accessoirement pour arriver à s'y retrouver dans les blocs quand onveut le faire évoluer...)

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #include <stdio.h>
    #include <stdlib.h>
    #include <signal.h>
    #include <unistd.h>
    #include <time.h> 
     
    int chargerNiveau()
    {
    	FILE* fichier = NULL;
    	char ligneFichier[50 + 2];
       	int i = 0, j = 0;
     
    	fichier = fopen("niveaux.lvl", "r");
    	if (fichier == NULL)
    		return 0;
     
    	while ( fgets(ligneFichier, sizeof ligneFichier, fichier) != NULL){
    		printf("Ligne : %s" , ligneFichier);
    	}
     
    	fclose(fichier);
    	return 1;
    }
     
    int main()
    {
    	chargerNiveau();
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ cat niveaux.lvl 
    11
    11
    $ ./essai 
    Ligne : 11
    Ligne : 11
    $
    Donc le soucis ne vient pas de fgets()

    Citation Envoyé par Border Voir le message
    Le 1 correspond à une image
    Ben évidemment, tout le monde sait ça que "1" c'est une image. Et "2" c'est le son...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    fgets lit le fichier, ligne par ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for (i = 0 ; i < NB_BLOCS_LARGEUR ; i++)
        {
            for (j = 0 ; j < NB_BLOCS_HAUTEUR ; j++)
            {
                switch (ligneFichier[(i * NB_BLOCS_LARGEUR) + j])
                {
    Ce code, s'attend à ce que ligneFichier soit un tableau 2D applati (mis sur une seule dimension).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Comment le mettre en deux dimensions?

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Ben quand tu as lu ta ligne, tu la découpes. Tu balances tes n premiers "1" dans un tableau[0] (prévu pour recevoir n caractères) et tu balances tes n "1" suivants dans un tableau[1]. Et ainsi de suite jusqu'à avoir traité toute ta ligne...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Comment ça découper je ne comprends pas trop...
    Désolé..

    En utilisant explode?

    Quand tu dis balancer je ne vois pas ce que tu veux dire par là.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Border Voir le message
    Comment ça découper je ne comprends pas trop...
    Désolé..

    En utilisant explode?

    Quand tu dis balancer je ne vois pas ce que tu veux dire par là.
    Bonsoir,

    explode() n'existe pas en C, ni en C++, et n'est pas à ma connaissance dans la sdl. Si vous voulez faire un équivalent, soit vous le codez, soit vous réfléchissez. (ou les deux)

    Sve@r écrit noir sur blanc ce qui est à réaliser.

    Balancer : (Familier) Jeter (avec un mouvement de balancement).
    Balancer un objet.

    Définition du dictionnaire... On peut donc le traduire par " Mettre"/"Prendre"/... en langage de plus haut niveau (avec tout le respect que j'ai pour Sieur Sve@r).

  9. #9
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Border Voir le message
    Comment ça découper je ne comprends pas trop...
    Désolé..

    Quand tu dis balancer je ne vois pas ce que tu veux dire par là.

    Faut pas programmer des trucs comme ça quand on n'a pas les bases !!!
    Donc tu utilises un algorithme de ta création pour recopier le premier "un" de ta ligne dans ton tableau[0][0], le second "un" de ta ligne dans un tableau[0][1], le troisième "un" de ta ligne dans un tableau [0][2] et etc jusqu'au n-ième "un" de ta ligne dans un tableau[0][n-1]. Puis tu continues avec le "n+1 ième" "un" de ta ligne dans un tableau[1][0], le "n+2" "un" de ta ligne dans un tableau[1][2] et etc. jusqu''au "n+n" "un" de ta ligne qui ira dans le tableau[1][n-1]. Et on peut continuer ainsi tant qu'il y a des "un" non exploités dans la ligne...

    Citation Envoyé par archMqx. Voir le message
    Définition du dictionnaire... On peut donc le traduire par " Mettre"/"Prendre"/... en langage de plus haut niveau (avec tout le respect que j'ai pour Sieur Sve@r).
    allez +1 rien que pour ça...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Saut de ligne fichier texte depuis un JTextArea
    Par jeanjean6 dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 23/05/2010, 01h08
  2. Suppression ligne fichier texte
    Par stephane92400 dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 25/12/2009, 16h14
  3. Saut de ligne Fichier
    Par r3my_ dans le forum MFC
    Réponses: 5
    Dernier message: 05/06/2007, 14h55
  4. [VBA-E] Derniere ligne fichier texte
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 72
    Dernier message: 13/04/2006, 12h07
  5. Réponses: 2
    Dernier message: 03/12/2004, 09h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo