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

 C Discussion :

Problème de lecture fichier en c


Sujet :

C

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 14
    Par défaut Problème de lecture fichier en c
    Bonjour à tous,
    j'ai un petit problème que je n'arrive pas à résoudre en c: on a un fichier txt (ref.txt) qui contient des coordonnée des coefficients(a, b, c) exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     1 0 13
              1 0 15
               2 8 20
               63 4 15
                . . .
                . . .
    Ensuite je besoin de lire ligne par ligne pour faire sélection le ligne égaux avec les boucle(résultat normalement prendre les coordonnées qui contient dans le fichier txt)
    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
     
     
     
    	for (k = 0; k < ; k++) {
    	for (j = 0; j < ; j++) {
    	for (i = 0; i < ; i++) {									 while(!feof(ref))
    										 {									fscanf(ref, "%i %i %i\n", &a, &b, &c);/* lecture de reference.txt*/
     
    										if (( a == i ) && ( b == j ) && ( c == k ))
    									{
     
    coef = tilec->data[(x + i) + (y + j) * (tilec->x1 - tilec->x0) + (z + k) * (tilec->x1 - tilec->x0) * (tilec->y1 - tilec->y0)];
    									fprintf(fdec, "%i\n", coef);
    if (((int) floor((coef+D/2)/D)*D) == ((int) floor(coef/D)*D))
     
    {
     
                                     dwt = 0;
    	} else
     
    {							
    dwt = 1;
     
    }
    											fprintf(msga,"%i\n", dwt);
     
     
    } // end if(i == a)
     
     
     
     
     
     
     
    }/*end de while (!EOF)... voilà je t'es expliqué l'idée, à toi de programmer,...*/
    Merci

  2. #2
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    si je comprend bien ce sont des coef d'equation du second degree?

    Je comprend pas bien ce que tu veux faire avec ce fichier (le lire sa j'ai compris) mais pourquoi trois boucle for??

    explique un peu plus clairement ce que tu veux faire et je pourrais surement te donner un coup de main pour realiser ce dont tu as besoin.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 14
    Par défaut Re
    bonjour,
    cette coordonnée pour les coefficients ondelettes de hautes fréquences (ref.txt) d'image 3D , j'ai récupéré à la compression .
    ensuite, j'ai lu ds le décompression , trois boucle pour parcoure l'image ,j'extrais seulement les coefficients de cette coordonnées.
    Merci

  4. #4
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    Il manque pas mal d'information pour pouvoir comprendre ce que tu veux faire:
    _ Les nombre, tu veux les recuperer mais pour en faire quoi?
    _ Dans ton code il y a des variable qui ne sont pas declarer, je pense qu'il en manque un bout donc
    _ qu'appelles-tu les coef de ces coordonnees?

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 14
    Par défaut
    Voici les code pour écrire (reference.txt) dans la compression:
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
     
     int D = 65536;
     
     int m, S, dwt;
    char chaine[20]="";
     
    FILE *fp = NULL;
     
    FILE *qim;
     
    FILE  *bis;
     
    FILE *ref;
     
    fp = fopen("dwt.txt", "a");
     
    qim = fopen ("dwtw.txt", "a");
     
    bis = fopen ("bis_ins.txt", "r");
     
    ref =  fopen ("reference.txt", "a");
     
    S = 2 * D;
     
     
     
     
     
     
     
    for (k = 0; k < cblk->z1 - cblk->z0; k++) {
     for (j = 0; j < cblk->y1 - cblk->y0; j++) {
        for (i = 0; i < cblk->x1 - cblk->x0; i++) {
     
     
    if ((resno == 0) && (bandno == 0)){
     
     
     
    /*-------Recuperation de coefficients DWT dans LLL-----------------*/
     
     
     dwt = tilec->data[(x + i) + (y + j) * (tilec->x1 - tilec->x0) + (z + k) * (tilec->x1 - tilec->x0) * (tilec->y1 - tilec->y0)];
     
    fprintf(fp, "%i\n", dwt);
     
     
                           /*-------Insertion QIM----------------*/
     
          if ( abs (dwt) > S) 
              {
     
                                                       fprintf(ref,"%i %i %i\n", i, j, k);
     
     
         fscanf (bis, "%i ", &m);
     
     
         if (m == 0)
     
         {
     
             dwt = (((int) floor (dwt/ D)) * D) + 3 * (D/4) ;
     
     
        } else if (m == 1)
     
         {
     
     
            dwt = (((int) floor (dwt/ D)) * D) + (D/4) ;
     
                                                  }
     
     
         fprintf(qim, "%i\n", dwt);
     
      }
    }
    }
    }
    }
    Maintenant, j'ai doit utilise ces fichier (reference.txt) pour selectionne seulement les coefficients de cette coordonnée (cette coefficient pour tatouée)
    Merci

    Notes :
    D: pas de quentification
    QIM: l'algorithme que utilise

  6. #6
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    Je pense qu'il y a une barriere de langue, car je comprend pas trop les phrases que tu ecris ^^

    Tu as un probleme pour la lecture du fichier ou le traitement des donnees, apres les avoir lues?

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 14
    Par défaut
    comment faire?

  8. #8
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 14
    Par défaut
    Bonjour à tous,
    Est-ce que vous avez trouvé une solution à mon problème
    reste le même; au niveaux de boucle if((a ==i) && (b == j) &&(c ==k))
    pas teste les toutes valeurs des fichier
    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
     for (k = 0; k < ; k++) {
    	for (j = 0; j < ; j++) {
    	for (i = 0; i < ; i++) {									 while(!feof(ref))
    										 {									fscanf(ref, "%i %i %i\n", &a, &b, &c);/* lecture de reference.txt*/
     
    										if (( a == i ) && ( b == j ) && ( c == k ))
    									{
     
    coef = tilec->data[(x + i) + (y + j) * (tilec->x1 - tilec->x0) + (z + k) * (tilec->x1 - tilec->x0) * (tilec->y1 - tilec->y0)];
    									fprintf(fdec, "%i\n", coef);
    if (((int) floor((coef+D/2)/D)*D) == ((int) floor(coef/D)*D))
     
    {
     
                                     dwt = 0;
    	} else
     
    {							
    dwt = 1;
     
    }
    											fprintf(msga,"%i\n", dwt);
     
     
    } // end if(i == a)
     
     
     
     
     
     
     
    }/*end de while (!EOF)... voilà je t'es expliqué l'idée, à toi de programmer,...*/

  9. #9
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    1- Personne n'a envie de déchiffrer ce code qui est proprement illisible.
    Les lecteurs, pour pouvoir t'aider, doivent se donner la peine de remettre au préalable en forme ce code. Ce n'est pas à eux de le faire. Le minimum est de présenter un document propre et directement exploitable.

    2-
    Est-ce que vous avez trouvé une solution à mon problème
    reste le même;
    La question posée est totalement obscure pour moi. Tant qu'on n'aura pas compris ton problème, on ne pourra pas faire grand chose.


    Si tu ne fais aucun effort de présentation du code et d'explications sur le problème rencontré, tu n'auras aucune réponse.

    Cordialement

  10. #10
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Par défaut
    Bonjour,

    Voici ton code correctement indenté :

    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
    for (k = 0; k < ; k++) 
    {
    	for (j = 0; j < ; j++) 
    	{
    		for (i = 0; i < ; i++) 
    		{			
    			while(!feof(ref))
    			{									
    				fscanf(ref, "%i %i %i\n", &a, &b, &c);	/* lecture de reference.txt*/
    				if (( a == i ) && ( b == j ) && ( c == k ))
    				{
    					coef = tilec->data[(x + i) + (y + j) * (tilec->x1 - tilec->x0) + (z + k) * (tilec->x1 - tilec->x0) * (tilec->y1 - tilec->y0)];
    					fprintf(fdec, "%i\n", coef);
    					if (((int) floor((coef+D/2)/D)*D) == ((int) floor(coef/D)*D))
    					{
    						dwt = 0;
    					} 
    					else
    					{							
    						dwt = 1;
    					}
    					fprintf(msga,"%i\n", dwt);
    				} // end if(i == a)
    			}	/*end de while (!EOF)... voilà je t'es expliqué l'idée, à toi de programmer,...*/
    		}
    	}
    }
    Il est bien de présenter ton code comme ceci, c'est un minimum, ça permet de se faire comprendre facilement sinon :
    1- Personne n'a envie de déchiffrer ce code qui est proprement illisible.
    Ensuite je besoin de lire ligne par ligne pour faire sélection le ligne égaux avec les boucle(résultat normalement prendre les coordonnées qui contient dans le fichier txt)
    Lire un fichier ligne par ligne en C rien de plus simple en plus c'est dans la FAQ.
    Ensuite si j'ai bien compris tu veux récupérer les lignes identiques uniquement ?

    A mon avis ce qu'il serait bien étant donné en plus que je n'ai pas compris ton code ou même ou ce que tu bloques.
    En plus on a pas tout le code ce qui rend par exemple ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    coef = tilec->data[(x + i) + (y + j) * (tilec->x1 - tilec->x0) + (z + k) * (tilec->x1 - tilec->x0) * (tilec->y1 - tilec->y0)];
    totalement incompréhensible.

    Donc je pense qu'il faut travailler par étape :

    - Lire le fichier ligne par ligne et afficher le résultat
    Quand cela marche et pas avant :
    - Faire les tests nécéssaire afin de détecter les lignes doublons.
    - Faire tes calculs ou ton traitement dessus.

    Je pense que tu as brulé des étapes ce qui te bloques.
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

Discussions similaires

  1. problème de lecture fichier
    Par Fahmi06 dans le forum Qt
    Réponses: 1
    Dernier message: 29/10/2007, 09h20
  2. Problème de lecture fichier texte
    Par Draconic dans le forum Visual C++
    Réponses: 1
    Dernier message: 05/08/2007, 18h00
  3. Problème STL lecture fichier texte
    Par Bourrine dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 03/04/2007, 11h57
  4. [C#-XML] - Problème de lecture fichier XML
    Par Gloups dans le forum Windows Forms
    Réponses: 9
    Dernier message: 08/08/2006, 00h40
  5. problème de lecture fichier
    Par Polo40 dans le forum C
    Réponses: 8
    Dernier message: 30/03/2006, 10h58

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