Code C

Code source en C
Portrait de trax

Makefile for mongoDB C driver

Parce qu'il n'y en avait pas
(peut servir à générer un peu n'importe quelle librairie)

http://clubnix.fr/files/Makefile.txt

Portrait de trax

Compilation tout en un

Un ami m'a parlé du fait que faire un énorme fichier C avec tout son code pour le compiler en une fois diminuait le temps de compilation. Certes plus qu'un seul fichier à ouvrir, édition de lien plus simple, mais bon quelque peu dubitatif j'ai voulu tester :

Créons pleins de fichiers avec pleins de fonctions :

echo -e "#include \"main.h\"\nint main(){" > main.c 
for i in {1..50}; 
do 
  echo "#include <stdio.h>" > plop$i.c 
  for j in {1..100}
  do  
    echo  void "plop$i"'_'"$j(){printf(\"plop$i"'_'"$j\n\");}" >> plop$i.c 

Portrait de trax

java Vs C

Petit exercice de l'umlv. Exercice 5 :
http://igm.univ-mlv.fr/~forax/ens/java/licence06-07/td1.html

Code d'origine en C :

     #include <stdio.h>
     #include <stdlib.h>
 
     int pascal (int nBut, int pBut){
       int * tab;
       unsigned int n, i;
 
       tab = (int *)malloc ((nBut+1)*sizeof(int));
       if(tab==NULL){
         fprintf(stderr,"Pas assez de place\n");
         exit(0);
       }
 
       tab[0] = 1;
 
       for(n=1; n<=nBut; n++){
         tab[n] = 1;
 
         for(i=n-1; i>0; i--)
           tab[i] = tab[i-1] + tab[i];
       }

Portrait de bruno

Allouer dynamiquement un tableau à n dimensions avec uniquement un malloc

Voici le code de la fonction array_alloc qui perment d'allouer un tableau de dimention n.
Le premier argument qu'elle prend c'est le nombre de dimention du tableau.
Le deuxième c'est un tableau contenant la taille de chaque dimention.
Le dernier argument désigne la taille du type avec lequel on rempliera la tableau.

#define PTR_SIZE sizeof (void*)                                                                                                                                                                                     

Portrait de trax

Régression Linéaire

Suite à un cours de math je me suis qu'il pourrait être intéressant d'implémenter un algorithme de regression linéaire histoire de mieux s'en rappeler (je suis sur qu'il existe pleins d'autres implémentations bien meilleurs). Celle-ci est volontairement non optimisée pour rester le plus lisible possible

Le code suivant charge un fichier sous la forme : "valX valY" (voir bas de page pour une code exemple). Le résultat peut être vérifié grâce gnuplot qui propose aussi une implémentation de cette algorithme.

#include <stdio.h>
#include <assert.h>

Tri par tas ou Heapsort

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define TRUE 1
#define FALSE 0
 
void initTableau(int *tab, int taille){
	int i;
	for(i = 0; i < taille; i++)
		tab[i] = random();
}
 
void swap(int *a, int *b){
	int x = *a;
	*a = *b;
	*b = x;
}
 
char domine( int *tab, int taille, int j ){
 
	if( 2*(j+1)-1 >= taille) /* tab[j] est seul */
		return TRUE;
 
	else if(2*(j+1)-1 == taille-1 && tab[j] >= tab[2*(j+1)-1]) /* tab[j] a 1 descendant et domine */
			return TRUE;

Portrait de trax

Convertir string en nombre

Convertir une chaîne de caractères en int (nombre)

Fichiers entête à inclure :

#include <stdlib.h>
#include <errno.h>

 int string2int (char *eugeni){
   errno  = 0;
   int t = strtol (eugeni, NULL, 10);
   if (errno == ERANGE || errno != 0) {
     perror ("strtol");
     exit (EXIT_FAILURE);
   }
   return t;
 }
 

Convertir chaine de caractères en double

 double string2double(char *eugeni){
   errno  = 0;
   double t = strtod(eugeni, NULL);
   if (errno == ERANGE || errno != 0) {

Portrait de trax

Macro de debugage et constante preprocesseur

Bien sur il y a gdb mais utiliser la sortie standard peut être utile

Mettre un commentaire différent c'est sympa mais ça peut être lourd à mettre en place

Il existe des constantes préprocesseurs qui peuvent être bien utile :

#define BUG printf("Dans le fichier %s dans la fonction %s à la ligne %d\n",__FILE__, __FUNCTION__, __LINE__)
#define DATE printf("Compile le %s %s\n", __DATE__, __TIME__)
 
#include <stdio.h>
 
 
void plop(){
        BUG;

Portrait de trax

Tutorial sqlite

SQLite ?? C'est quoi ?

Non ce n'est un pas un SQL pour l'élite mais une petite librairie C qui permet d'utiliser une base de donnée embarquée.

Prérequis

Caractéristiques :

  • ACID : transaction Atomique, Cohérence, Isolation, Durabilité
  • Aucune configuration demandée
  • Implémente la plupart des requêtes SQL92
Syndiquer le contenu