begin process at 2012 05 27 19:06:10
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > RETOURNER PLUSIEURS ARGUMENTS AVEC LES TUPLES

RETOURNER PLUSIEURS ARGUMENTS AVEC LES TUPLES


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :retourner, arguments, variables, tuple Niveau :Débutant Date de création :17/08/2010 Vu :1 800

Auteur : Davy974

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Ce petit morceau de code permet de retourner un nombre variable d'arguments par fonction.
Ne pas oubliez de détruire les tuples à la fin avec tuple_delete() !

Source

  • typedef struct
  • {
  • char data[1048576];
  • int loc;
  • } tuple_t;
  • tuple_t* tuple_new()
  • {
  • tuple_t* tuple = (tuple_t*)malloc(sizeof(tuple_t));
  • tuple->loc = 0;
  • return tuple;
  • }
  • void tuple_rewind(tuple_t* tuple)
  • {
  • tuple->loc = 0;
  • }
  • void tuple_delete(tuple_t* tuple)
  • {
  • free(tuple);
  • }
  • void tuple_write(tuple_t* tuple, void* data, unsigned int size)
  • {
  • unsigned char* ptr = (unsigned char*)(data);
  • unsigned int i = 0;
  • while (i < size)
  • {
  • tuple->data[tuple->loc + i] = ptr[i];
  • i++;
  • }
  • tuple->loc += size;
  • }
  • void tuple_parse(tuple_t* tuple, void* data, unsigned int size)
  • {
  • unsigned char* ptr = (unsigned char*)(data);
  • unsigned int i = 0;
  • while (i < size)
  • {
  • ptr[i] = tuple->data[tuple->loc + i];
  • i++;
  • }
  • tuple->loc += size;
  • }
typedef struct
{
    char data[1048576];
    int loc;
} tuple_t;

tuple_t* tuple_new()
{
    tuple_t* tuple = (tuple_t*)malloc(sizeof(tuple_t));

    tuple->loc = 0;

    return tuple;
}

void tuple_rewind(tuple_t* tuple)
{
    tuple->loc = 0;
}

void tuple_delete(tuple_t* tuple)
{
    free(tuple);
}

void tuple_write(tuple_t* tuple, void* data, unsigned int size)
{
    unsigned char* ptr = (unsigned char*)(data);
    unsigned int i = 0;

    while (i < size)
    {
        tuple->data[tuple->loc + i] = ptr[i];
        i++;
    }

    tuple->loc += size;
}

void tuple_parse(tuple_t* tuple, void* data, unsigned int size)
{
    unsigned char* ptr = (unsigned char*)(data);
    unsigned int i = 0;

    while (i < size)
    {
        ptr[i] = tuple->data[tuple->loc + i];
        i++;
    }

    tuple->loc += size;
}



 Sources du même auteur

COMPILATEUR BF VERS BF-BYTECODE

 Sources de la même categorie

Source avec Zip KISIEL CD INFO DRIVE par kisiel0147852
Source avec une capture SUPPRESSION DES REDONDANCES DE FICHIERS par cyberntique
Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip DETECTEUR EJP par idpro

 Sources en rapport avec celle ci

RETOURNER UNE SURFACE SDL par Tomaka17
Source avec Zip MANIPULATION SIMPLE DES TABLES RELATIONNELLES :GENRE SGBDR par bad_smi
SWITCH DE STRINGS (C++) par ordiman85

Commentaires et avis

Commentaire de lynxtyle le 17/08/2010 11:42:08 10/10

Très sympa ce petit bout de code... Merci !!!

Juste un bémol : mets le en niveau initier ou alors rajoute une petite source exemple (ou juste un commentaire sur son utilisation) car là c'est un peu brute de décoffrage pour un débutant ;)

10/10 car d'habitude je gère ce problème fonction par fonction (un peu prise de tête...) donc chouète j'adopte : direction ma caisse à outils :-D

Commentaire de omnia le 18/08/2010 19:15:23

Bonjour,
cette source est bien de niveau débutant ...
sa fait partie des base pour faire de la dev en c.

bon maintenant l'intérêt de la source :
- bof vraiment trop simple, et de la à mettre 10 a ce genre de source lol >> en déduit le niveau de la personne qui a mit la note ou simplement du fait d'avoir plusieurs compte/copains pour avoir des notes ...
- pour ce qui est du code bon maintenant que j'ai tout démonté on va aller dans le positif.

il y a quelques erreurs (pour ne citer que 1-2) :
- tuple_t* tuple = (tuple_t*)malloc(sizeof(tuple_t));
il faut faire un test pour voir si la mémoire est bien alloué ^^

- char data[1048576];
oua la grande zone mémoire, en allouer une dynamiquement serait un +

- tuple_write
pourquoi ne pas utiliser de fonction performante avec un test de taille plutot que pleins de choses bof.

- le format de ta source : pas de commentaires (c vrais que pas vraiment besoin mais quand même !!!)

- sa reseble étrangement à la réécriture d'un objet tuple (en vachement moins bien)

Perso : je ne vois pas trop l'intérêt de la source (en tout cas pour moi).
Je reviens sur les 10, si cette source vaut 10 j'en connais des 10aines sur le site qui en valent 1000 mais bon ^ ^

Toutes les remarques venaient suite au poste juste avant moi qui m'a bien fait rigoler, je n'ai rien contre son auteur et la source ;)

Commentaire de vecchio56 le 19/08/2010 21:18:24 administrateur CS

Omnia : il utilise effectivement de l'allocation dynamique.

Pour le reste je suis d'accord avec toi : l'intérêt de cette m'échappe totalement (peut-être parce qu'elle n'en a aucun?). La moindre des choses serait de mette un exemple d'utilisation (même si cela mettrait difficilement en évidence un quelconque intérêt...)
Quant à la note du premier commentaire, elle me semble également très discutable :)

Commentaire de omnia le 20/08/2010 08:04:24

Autan pour moi faute de copie :p je supprime : en allouer une dynamiquement serait un +

:p

Commentaire de kml404 le 26/08/2010 02:15:08

c bien les codes. Quel nouveau projet de Visual Studio? pour les modelés installés.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Informations sur la STL [ par simtiers ] Salut ! Existe-il dans la STL une classe de stockage du genre vector qui permette de stocker des variables de type diff&#233;rents ? En fait, je cr& recuperation de variables deja enregistrées... [ par noSnoR ] j'aimerai pour un tout petit programme pouvoir enregistrer dans un char[] la valeur d'une variable enregistr&#233;e par le Ms-Dos (precision : je suis Probleme avec les arguments de RegQueryValueEx [ par Menontona ] Voila c'est tout b&#234;te mais j'arrive pas a compiler la fonction RegQueryValueEx sous dev cpp.Le code:int i;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWO Passer arguments [ par ncoder ] Bonjour &#224; tous !Et oui, des questions, encore des questions, toujours des questions...Je me demandais si on pouvais passer des arguments &#224; u Lister des variables membres [ par tintin72 ] Bonjour,Je voudrais afficher les &#233;l&#233;ments contenus dans une liste chain&#233;e ex:class MaClasse{&nbsp;&nbsp;&nbsp;&nbsp; public :&nbsp;&nbs Executer un .exe en passant des arguments [ par ousta ] Comment en c++ windows lancer un programme en passant une ligne de commandegenre./main.exe -p 5 -d lol partage de variables entre instances d'un DLL [ par pasty ] Bonjour,J'utilise MinGW.Je souhaite partager des variables entre les diff&#233;rentes instances d'un m&#234;meDLL, mais je ne&nbsp;sais pas quelle dir définition globale des variables [ par minet03 ] Salut, Je voudrais faire un header avec toutes mes variables dedans (pour simplifier) et l'inclure dans toutes mes pages. Seuelement, le compilo affic Variables Globales, statiques, locales ? [ par mondrone ] G pu voir dans la plupart des tutos OpenGL que g lus, que les variables devant servir dans des parties diff&#233;rentes de prog &#233;taient d&#233;cl trou de memoire [ par erazor ] lorsque je fait un alt tab ou un ctrl alt suppr a partir de mon programme celui ci plante avec le celebre message gnagnagna ne peut pas etre readenmon


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales