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 :

Lecture fichier par caractère & strcmp


Sujet :

C

  1. #21
    Membre confirmé Avatar de YASIR
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Donc là tu te trouves dans une phase de choix. Tu as en effet la possibilité de
    1)
    - transformer ton binaire en texte (chaque bit 0/1 devient un caractère '0' ou '1' mais il se traduit alors par 00000000 ou 00000001 (soit 8 bits)
    - écrire ensuite ce caractère '0' ou '1' dans le fichier
    Et tu te retrouves avec un fichier qui, pour stocker l'octet 01100101 stockera '0', 1', '1', '0', '0', 0', 1', 0', '1'. Tu multiplies la taille par 8. Mais tu peux ouvrir ton fichier avec le blocnote et changer les 0 et les 1 si t'as besoin
    En retour il te faut ensuite lire 8 caractères et retransformer ces 8 caractères en bit pour pouvoir réutiliser ton fichier dans ton programme
    Merci beaucoup pour cette réponse très détaillée, tu m'a enlevé plusieurs points sombres...
    Je vais travailler tout ca et je reviendrai. Merci encore

  2. #22
    Membre confirmé Avatar de YASIR
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut
    Citation Envoyé par bobmidou Voir le message
    Salut

    Voici un exemple classique qui marche pour une seule ligne , regarde si ça peut t'aider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    			// lire les C[i]
    			printf("Entrer l'élément %d de la suite à utiliser : ",i);
    			scanf("%d",&C[i]);
    			if (chaque_ligne[j][i] == '1') // on s'en fou de 0
    			res[j] += C[i];
    Alors en fait, dans le code a ce moment là, ce n'est pas les C(j) qui sont entrés par l'utilisateur mais les B(i)
    On utilise les B(i) pour faire les C(j) >> (j) car il y en a un par ligne

    C(1)=B(1) * X(1) + B(2) * X(2) .......
    X(1) premier bit de la première ligne, X(2) deuxième...
    pareil pour la deuxième ligne etc
    je vais travailler cela.

    Quoi qu'il en soit, ton programme est tres interessant, il va beaucoup m'aider.

  3. #23
    Membre confirmé Avatar de YASIR
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut
    En fait, c'est moi qui ait fait une confusion de variable entre C(i) et res(i) dans mon programme initial, merci, ca m'a permi de m'en rendre compte

    en réalité C(i) >>> B(i) entrés par l'utilisateur
    res (i) >>> C(i) un pour chaque ligne correspondant a la somme des xibi.

  4. #24
    Membre éprouvé Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Par défaut
    salut

    Voici une autre solution qui tient compte de toutes les lignes du fichier texte
    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
     
    int main(void)
    {
    	FILE *fp;
    	char tampon[512];
    	char ligne_lue[512];
    	int nombre_de_ligne = 0;
     
    	// Les C[i] sont sous forme de tableau mais ils pourraient être tapés par l'user
    	int C[8] = {5,5,5,5,5,5,5,5};
    	int res[8];
     
    	// test l'existance du fichier texte
    	if ((fp = fopen("fichiertest.txt","r")) == NULL)
    	{
    		printf("Impossible d'ouvir le fichier\n\n");
    		return 0;
    	}
    	else
    	{
    		// Calcule le nombre de lignes dans le fichier texte
    		while(fgets(ligne_lue, sizeof(ligne_lue), fp) != NULL)
    		{
    			nombre_de_ligne++;
    		}
     
    		// Positionne le curseur au début du fichier
    		fseek(fp,0,SEEK_SET);
     
    		for (int i = 0 ; i < nombre_de_ligne ; i++)
    		{
    			// Lire les données mises en forme
                            fscanf(fp,"%s",tampon);
    			for (int j = 0 ; j < 8 ; j++)
    			{
    				// Calcul le résultat voulu
    				if (tampon[j] == '1')
    				res[i] += C[j];
     
    			}
    			// Affiche le contenu du fichier
    			printf("%s",tampon); 
    			// Affiche les résultats voulus
    			printf(" ------> Résultat de la ligne %d = %d \n",(i+1),res[i]);
    		}
    		fclose(fp);
     
    		printf("\n\n");
    		printf("\n\n");
       }
    	return 0;
    }
    Reste à forcer l'utilisateur de taper les C[i] et de vérifier si le fichier ne contient que des 0 et des 1

    Bonne recherche

  5. #25
    Membre confirmé Avatar de YASIR
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut
    Merci bobmidou !! je vais compiler ca et chercher pour compléter et finir cette fonction de mon programme.

  6. #26
    Membre confirmé Avatar de YASIR
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut
    Je ne comprends pas, ca ne marche pas, ca me fait comme hier, ca me donne des gros entiers comme 20848262695
    alors que j'ai mit comme suite 1,2,3,4,5,6,7,8...
    et fichiertest.txt contient 10000001
    00110000
    00000111

  7. #27
    Membre éprouvé Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Par défaut
    salut

    avec quel code tu dis ça marche pas le mien ?

    chez moi ça marche (Visual C++)

    voici le résultat après la suite 1,2,3,4,...



    Bonne continuation

  8. #28
    Membre confirmé Avatar de YASIR
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut
    Je comprends pas, avec ton dernier prgramme que tu as posté, ca ne me donne pas du tout ca, bon je vais bidouiller un peu pour trouver ce qui ne va pas.

    Merci de ton aide, elle m'a été très utile

  9. #29
    Membre confirmé Avatar de YASIR
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut
    Voila ce que j'obtiens moi , compilé sous Dev cpp




  10. #30
    Membre confirmé Avatar de YASIR
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut
    c'est ce que j'obtiens avec ce 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
    62
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void)
    {
        int i,j;
    	FILE *fp;
    	char tampon[512];
    	char ligne_lue[512];
    	int nombre_de_ligne = 0;
     
    	// Les C[i] sont sous forme de tableau mais ils pourraient être tapés par l'user
    	int C[8] = {1,2,3,4,5,6,7,8};
    	int res[8];
     
        fp = fopen("fichiertest.txt","r");
     
    	// test l'existance du fichier texte
    	if ((fp = fopen("fichiertest.txt","r")) == NULL)
    	{
    		printf("Impossible d'ouvir le fichier\n\n");
    		return 0;
    	}
     
    	else
    	{
    		// Calcule le nombre de lignes dans le fichier texte
    		while(fgets(ligne_lue, sizeof(ligne_lue), fp) != NULL)
    		{
    			nombre_de_ligne++;
    		}
     
    		// Positionne le curseur au début du fichier
    		fseek(fp,0,SEEK_SET);
     
    		for ( i = 0 ; i < nombre_de_ligne ; i++)
    		{
    			// Lire les données mises en forme
                            fscanf(fp,"%s",tampon);
    			for ( j = 0 ; j < 8 ; j++)
    			{
    				// Calcul le résultat voulu
    				if (tampon[j] == '1')
    				res[i] += C[j];
     
    			}
    			// Affiche le contenu du fichier
    			printf("%s ",tampon); 
     
    			// Affiche les résultats voulus
    			printf(" ------> Resultat de la ligne %d = %d \n",(i+1),res[i]);
    		}
    		fclose(fp);
     
    		printf("\n\n");
    		printf("\n\n");
     
       }
       system("PAUSE");
       return 0;
    }

  11. #31
    Membre éprouvé Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Par défaut
    salut

    désolé je n'ai jamais travaillé avec dev cpp

    Alors il doit y avoir qq chose de différent entre VC++ et Dev

    Bonne chance en tout cas

    PS : n'oublie pas que le fichier ne doit pas dépasser 8 lignes si tu veux mettre plus tu changes le tableau res[nombre voulu]

    c'tait juste un code simple mais on pourrait faire mieux

  12. #32
    Membre confirmé Avatar de YASIR
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut
    Ahhhhhhhhhhhhhhhhhh j'ai enfin trouvééééééééééé

    il fallait simplement réinitialiser res[i] à 0 juste apres le scanf avant d'entrer dans la seconde boucle, logique !

    Merci à tous, j'ai achevé là une petite partie de mon futur programme mais une partie fondamentale, merci encore !


  13. #33
    Membre confirmé Avatar de YASIR
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut
    Voila le bon 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
    62
    63
    64
    65
    66
    67
    68
    69
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void)
    {
        int i,j;    
        FILE *fp;
        fp = fopen("texte_bin.txt","r");
        calcul_de_c(i,j);
     
        return 0;
    }
     
    int calcul_de_c(int i,int j)
    {
     
     
        FILE *fp;
    	char tampon[512];
    	char ligne_lue[512];
    	int nombre_de_ligne = 0;
     
    	// Les C[i] sont sous forme de tableau mais ils pourraient être tapés par l'user
    	int C[8] = {1,2,5,10,20,30,40,50};
    	int res[8];
     
    	// test l'existance du fichier texte
    	if ((fp = fopen("texte_bin.txt","r")) == NULL)
    	{
    		printf("Impossible d'ouvir le fichier\n\n");
    		return 0;
    	}
    	else
    	{
    		// Calcule le nombre de lignes dans le fichier texte
    		while(fgets(ligne_lue, sizeof(ligne_lue), fp) != NULL)
    		{
    			nombre_de_ligne++;
    		}
     
    		// Positionne le curseur au début du fichier
    		fseek(fp,0,SEEK_SET);
     
    		for ( i = 0 ; i < nombre_de_ligne ; i++)
    		{
    			// Lire les données mises en forme
                fscanf(fp,"%s",tampon);
                res[i]=0;
    			for ( j = 0 ; j < 8 ; j++)
    			{
    				// Calcul le résultat voulu
    				if (tampon[j] == '1')
    				res[i] += C[j];
     
    			}
    			// Affiche le contenu du fichier
    			printf("%s",tampon); 
    			// Affiche les résultats voulus
    			printf(" ------> C (%d) = %d \n",(i+1),res[i]);
    		}
    		fclose(fp);
     
    		printf("\n\n");
    		printf("\n\n");
       }
       system("PAUSE");
     
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. probleme lecture fichier par fichier
    Par sousou12 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 01/07/2013, 22h02
  2. Réponses: 20
    Dernier message: 09/02/2006, 09h45
  3. Réponses: 1
    Dernier message: 26/01/2006, 18h16
  4. [debutant]lecture fichier ligne par ligne
    Par Battosaiii dans le forum C
    Réponses: 2
    Dernier message: 13/11/2005, 19h02

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