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 :

comment ecrire des unsigned short dans un fichier???


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 277
    Par défaut comment ecrire des unsigned short dans un fichier???
    J'ai une fonction compute_log qui me calcule 2 tables, gflog et gfilog (pour la petite histoire, c'est le logarithme et l'antilogarithme dans le champs de Galois), mais pour optimiser mon code je veux écrire directement les résultats dans un fichier .h
    mais j'ai des probleme de types....
    comment je dois faire pour les résoudre, et existe t il une méthode plus simple???

    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
    84
    85
    #include <malloc.h>
    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    #include<string.h>
    int compute_log(int);
    unsigned int prim_poly_4 = 023;
    unsigned int prim_poly_8 = 0435;
    unsigned int prim_poly_16 = 0210013;
     
    unsigned short *gflog, *gfilog;
     
    int main ()
    {
    	//if you use the function get_sentence
     
    	int NW;
    	int k;
    	int i;
    //	int temp[3]={8, 16, 256};
    	FILE *pt;
    	char *nom = "gflog8.h";
    	char  *test;
     
    	pt = fopen(nom,"wt"); 
        fputs ("int *gflog8={",pt);
     
    	NW = 8;
     
    	i = compute_log(NW);
    	if (i == -1) printf("NW should be 4, 8 or 16\n");
     
     
    	for(i=0;i<NW;i++)
    	{
    		test = (char *) gflog++;
     
    		fputs(test,pt);
                    fputs (", ",pt);
    		test++;
    	}
    fputs ("}",pt);
    return 1;
    }
    ////////////////////////////////////////////////////////////::
    int compute_log(int NW)
    {
    	unsigned int b, log, x_to_w, prim_poly;
    	int w;
     
    	w = (int) (log10 ( (double) NW) / log10(2));
     
    	switch(w) {
    	case 4:		prim_poly = prim_poly_4;	break;
    	case 8:		prim_poly = prim_poly_8;	break;
    	case 16:	prim_poly = prim_poly_16;	break;
    	default:	return -1;
    	}
     
    	x_to_w = 1 << w;
    	gflog = (unsigned short *) malloc (sizeof(unsigned short) * x_to_w);
    	if(gflog == NULL) 
    	{
    	    fprintf(stderr,"Allocation gflog impossible \n");
    	     exit(EXIT_FAILURE);
    	}
    	gfilog = (unsigned short *) malloc (sizeof(unsigned short) * x_to_w);
    	if(gfilog == NULL)
    	{
    	    fprintf(stderr,"Allocation gfilog impossible \n");
    	     exit(EXIT_FAILURE);
    	}
    	b = 1;
     
    	for (log = 0; log < x_to_w-1; log++)
    	{
    		gflog[b] = (unsigned short) log;
    		gfilog[log] = (unsigned short) b;
    		b = b << 1;
    		if (b & x_to_w) b = b ^ prim_poly;
    	}
     
    	return 0;
     
    }

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: comment ecrire des unsigned short dans un fichier???
    Citation Envoyé par gronaze
    Ne compile pas
    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
     
    Compiling: main.c
    main.c: In function `main_':
    main.c:24: warning: initialization discards qualifiers from pointer target type
    main.c:20: warning: unused variable `k'
    main.c: In function `compute_log':
    main.c:50: warning: declaration of 'log' shadows a global declaration
    C:/Program Files/CodeBlocks/include/math.h:148: warning: shadowed declaration is here
    main.c:53: warning: passing arg 1 of `log10' as floating rather than integer due to prototype
    main.c:56: error: `prim_poly_4' undeclared (first use in this function)
    main.c:56: error: (Each undeclared identifier is reported only once
    main.c:56: error: for each function it appears in.)
    main.c:57: error: `prim_poly_8' undeclared (first use in this function)
    main.c:58: error: `prim_poly_16' undeclared (first use in this function)
    main.c:87:2: warning: no newline at end of file
    Process terminated with status 1 (0 minutes, 0 seconds)
    5 errors, 6 warnings

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 277
    Par défaut
    oui j'ai fait un edit pour rajouter prim_poly;
    la compilation devrait marcher maintenant...

    mon probleme c'est que gflog est définit en unsigned short, et que fputs n'accepte que des char*

  4. #4
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    tu peux essayer fwrite si tu veux ecrire autre chose que des char*

  5. #5
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Utilise fprintf (c'est comme printf mais dans un file * donné)

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 277
    Par défaut
    ok merci, c'est l'instruction fprintf que je cherchais.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Charger et Sauver des unsigned char dans un fichier
    Par Qooort dans le forum Débuter
    Réponses: 9
    Dernier message: 17/05/2013, 18h39
  2. comment éliminer des colonnes vides dans un fichier csv
    Par xavier81 dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 10/05/2012, 23h30
  3. [XML] [Débutant]Comment ajouter des balise html dans un fichier XML
    Par pierrot10 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 18/09/2010, 14h36
  4. Ecrire des vecteurs colonnes dans un fichier text
    Par Ballim dans le forum MATLAB
    Réponses: 6
    Dernier message: 14/11/2008, 09h08
  5. [PHP-JS] comment recupérer des variables javascript dans un fichier php
    Par domino_dj dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/02/2007, 11h46

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