Bonjour,
Suite à mon post sur la recherche d'un livre d'algorithmie [1], j'ai acheté Algorithmes en langage c [2] de Robert Sedgewick [3].
Le livre est très bien et assez simple d'accès, par contre, je ne trouve pas les corrigés des exercices.
Sinon, ma question:
Je veut representer un chiffre (0,1,2,3,4,5,6,7,8,9)
Quel type est le plus adapté, pour l'instant j'utilise des int, mais n'est ce pas une depense de memoire inutile?
Bonne journée,
Julien
[1] http://linuxfr.org/forums/19/2571.html(...)
[2] http://www.eyrolles.com/Informatique/Livre/9782100053315/livre-algo(...)
[3] http://www.cs.princeton.edu/~rs/(...)
Forum Programmation.c Type pour un chiffre
Forum Programmation.c Optimisation de code C
Bonjour,
je cherche à ecrire en C une routine optimisée pour calculer un produit scalaire de deux vecteurs (de taille variable). Comme cette routine sera appelée plusieurs milliers (millions) de fois, je cherche à gagner le moindre cycle processeurs. Ma plate-forme est un athlon-XP (sans SSE2 donc). Pour l'instant j'ai 2 variantes:
* C-pure:
je cherche à ecrire en C une routine optimisée pour calculer un produit scalaire de deux vecteurs (de taille variable). Comme cette routine sera appelée plusieurs milliers (millions) de fois, je cherche à gagner le moindre cycle processeurs. Ma plate-forme est un athlon-XP (sans SSE2 donc). Pour l'instant j'ai 2 variantes:
* C-pure:
double dot(const double *a, const double *b, unsigned long n)
{
register double res=0.0;
register unsigned long i;
for(i=(n/4)*4; i != 0; i -= 4)
{
(…)
Forum Programmation.c code pour faire du xpath avec du xml en C
Bonjour à tous,
J'ai un xml avec lequel je voudrais faire du XPath pour recupérer seulement les infos qui m'interesse. J'ai essayer libxml2 mais ca me parait vraiment gros pour faire un truc tout simple. J'utilise déjà expath.
Merci pour toutes suggestions.
J'ai un xml avec lequel je voudrais faire du XPath pour recupérer seulement les infos qui m'interesse. J'ai essayer libxml2 mais ca me parait vraiment gros pour faire un truc tout simple. J'utilise déjà expath.
Merci pour toutes suggestions.
Forum Programmation.c initialisation statique tableau
Bonjour,
existe-t-il un moyen d'initialiser les gros tableau statiquement en C, c'est a dire pouvoir dire que tout le tableau doit etre initialiser avec une valeur particuliere ou encore mieux pouvoir lui precisser la valeur de certains elements et initialiser le reste a une autre constante.
Sinon existe t il une extention gcc pour le faire ?
Merci
Matthieu
existe-t-il un moyen d'initialiser les gros tableau statiquement en C, c'est a dire pouvoir dire que tout le tableau doit etre initialiser avec une valeur particuliere ou encore mieux pouvoir lui precisser la valeur de certains elements et initialiser le reste a une autre constante.
Sinon existe t il une extention gcc pour le faire ?
Merci
Matthieu
Forum Programmation.c identifier à coup sur un fichier.
Bonjour,
Je désire implémenter une méthode en C qui prend en argument un fichier de type MP3 ou OGG et qui :
- renvoie les informations contenues dans une DB si le fichier est déjà présent
- ajoute le fichier dans la DB avec des valeurs par défaut si il n'est pas déjà présent (et renvoie donc ces valeurs par défaut)
Mon problème est donc d'identifier à coup sur un fichier, mais en le reconnaissant même si il a changé (…)
Je désire implémenter une méthode en C qui prend en argument un fichier de type MP3 ou OGG et qui :
- renvoie les informations contenues dans une DB si le fichier est déjà présent
- ajoute le fichier dans la DB avec des valeurs par défaut si il n'est pas déjà présent (et renvoie donc ces valeurs par défaut)
Mon problème est donc d'identifier à coup sur un fichier, mais en le reconnaissant même si il a changé (…)
Forum Programmation.c Accès aléatoire à un fichier d'un répertoire
(et oui, ce soir, je fais du C ;-) )
la fonction que je suis en train d'écrire reçoit en paramètre le nom d'un répertoire.
Elle renvoie un fichier, le plus aléatoire possible, contenu dans le répertoire ou le sous-répertoire.
Le problème, c'est que je viens de me rendre compte qu'en la faisant récursive, plus un fichier est profond dans la structure, moins il a de chances d'être choisi. Et j'aimerais que chaque fichier aie sa chance de manière équitable.
(…)
la fonction que je suis en train d'écrire reçoit en paramètre le nom d'un répertoire.
Elle renvoie un fichier, le plus aléatoire possible, contenu dans le répertoire ou le sous-répertoire.
Le problème, c'est que je viens de me rendre compte qu'en la faisant récursive, plus un fichier est profond dans la structure, moins il a de chances d'être choisi. Et j'aimerais que chaque fichier aie sa chance de manière équitable.
(…)
Forum Programmation.c appel system execve dans fonction du noyau
salut à tous,
je voulais demander s'il est possible d'utiliser un appel system ( comme execve) dans un appel system que je veux ajouter dans un noyau linux . l'appel est du type:
#include <linux/linkage.h>
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/unistd.h>
char *chemin[2];
char *arg_list[2];
asmlinkage int sys_mon_appel(int arg1, char* arg2){
char *chemin[0]="PATH=/home/gadiri";
char *chemin[1]=NULL;
char *arg_list[0]="./program";
char *arg_list[1]=NULL"
/*
--
*/
_syscall3(int,execve,const char *,filename,const char * ,arg_list,char *const,env); /*macro qui permet d'invoquer l'appel system dans l'espace noyau.
execve("./program",arg_list,chemin) ;
(…)
je voulais demander s'il est possible d'utiliser un appel system ( comme execve) dans un appel system que je veux ajouter dans un noyau linux . l'appel est du type:
#include <linux/linkage.h>
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/unistd.h>
char *chemin[2];
char *arg_list[2];
asmlinkage int sys_mon_appel(int arg1, char* arg2){
char *chemin[0]="PATH=/home/gadiri";
char *chemin[1]=NULL;
char *arg_list[0]="./program";
char *arg_list[1]=NULL"
/*
--
*/
_syscall3(int,execve,const char *,filename,const char * ,arg_list,char *const,env); /*macro qui permet d'invoquer l'appel system dans l'espace noyau.
execve("./program",arg_list,chemin) ;
(…)
Forum Programmation.c Indent & makefiles
M'sieurs-dames, bonjour.
Ma première question porte sur GNU indent ; j'ai pu l'amener à indenter mon code C à peu près comme je voudrais... sauf pour l'accolade de début de corps de fonctions: je voudrais obtenir:
int main(void){
/* ... */
}
mais à mon grand dam je n'ai pas pu trouver l'option qui va bien. Quelqu'un pourrait-il me tirer d'affaire ?
Deuxième question, à propos des makefiles, ou plus généralement, de l'automatisation du processus de développement d'un projet en (…)
Ma première question porte sur GNU indent ; j'ai pu l'amener à indenter mon code C à peu près comme je voudrais... sauf pour l'accolade de début de corps de fonctions: je voudrais obtenir:
int main(void){
/* ... */
}
mais à mon grand dam je n'ai pas pu trouver l'option qui va bien. Quelqu'un pourrait-il me tirer d'affaire ?
Deuxième question, à propos des makefiles, ou plus généralement, de l'automatisation du processus de développement d'un projet en (…)
Forum Programmation.c Problème de valeur hexadécimale dans un paquet ethernet
Bonjour cher forum !
Mon problème est tout bête, aussi je vais essayer de faire court. J'utilise la librairie pcap dans un projet qui présente des fonctionnalités de sniffing. Je récupère donc mes paquets ethernet, je remplis ma structure ether_header correctement, et là j'ai un gros problème pour lire le champ ether_type qui donne le protocole que couvre la trame ethernet (ip, arp, rarp) : le problème est que d'après les headers de linux, pour IP je dois avoir Ox800 (…)
Mon problème est tout bête, aussi je vais essayer de faire court. J'utilise la librairie pcap dans un projet qui présente des fonctionnalités de sniffing. Je récupère donc mes paquets ethernet, je remplis ma structure ether_header correctement, et là j'ai un gros problème pour lire le champ ether_type qui donne le protocole que couvre la trame ethernet (ip, arp, rarp) : le problème est que d'après les headers de linux, pour IP je dois avoir Ox800 (…)
Forum Programmation.c Algorithmes syntaxiques
Je recherche des informations de toute sorte sur les algorithmes syntaxiques. Je n'y connais absolument rien dans ce domaine, donc des informations très générales ne seraient de pas de refus.
De plus, si les articles mettent en relation les algorithmes avec un langage comme le C (pas orienté objet en somme), je serai encore plus satisfait ;)
Enfin, les parsers XML doivent utiliser des algorithmes bien spécifiques, et j'aimerai m'y intéresser. Bien sûr l'analyse de code source pourrait répondre à (…)
De plus, si les articles mettent en relation les algorithmes avec un langage comme le C (pas orienté objet en somme), je serai encore plus satisfait ;)
Enfin, les parsers XML doivent utiliser des algorithmes bien spécifiques, et j'aimerai m'y intéresser. Bien sûr l'analyse de code source pourrait répondre à (…)
Forum Programmation.c Pb avec le SCSI
Bonjour à tous !
Pas tres vieux dans le monde Linux (NDLR: :D ) j'essaye de compiler mon propre noyau (pour apprendre, découvrir un peu comment ca marche). J'ai suivi les indications trouvées sur Lea et du Kernel HOWTO, mais la commande make bzImage modules modules_install bloque. Je me retrouve avec un truc pas beau. Je vous recopie le message du terminal:
CC [M] drivers/scsi/aic7xxx/aic79xx_pci.o
SHIPPED drivers/scsi/aic7xxx/aic79xx_reg_print.c
CC [M] drivers/scsi/aic7xxx/aic79xx_reg_print.o
CC [M] drivers/scsi/aic7xxx/aic79xx_osm.o
CC [M] drivers/scsi/aic7xxx/aic79xx_proc.o
CC [M] drivers/scsi/aic7xxx/aic79xx_osm_pci.o
make (…)
Pas tres vieux dans le monde Linux (NDLR: :D ) j'essaye de compiler mon propre noyau (pour apprendre, découvrir un peu comment ca marche). J'ai suivi les indications trouvées sur Lea et du Kernel HOWTO, mais la commande make bzImage modules modules_install bloque. Je me retrouve avec un truc pas beau. Je vous recopie le message du terminal:
CC [M] drivers/scsi/aic7xxx/aic79xx_pci.o
SHIPPED drivers/scsi/aic7xxx/aic79xx_reg_print.c
CC [M] drivers/scsi/aic7xxx/aic79xx_reg_print.o
CC [M] drivers/scsi/aic7xxx/aic79xx_osm.o
CC [M] drivers/scsi/aic7xxx/aic79xx_proc.o
CC [M] drivers/scsi/aic7xxx/aic79xx_osm_pci.o
make (…)
Forum Programmation.c GObject
Est ce que qqun pratique GObject ?
En fait, je cherche de la doc sur GObject. J'ai lue la doc officiel mais je serai curieux
de trouver des petit exemples d'utilisation, un tutoriel en somme....
Je trouve le principe assez étrange et complexe en tout cas...
En fait, je cherche de la doc sur GObject. J'ai lue la doc officiel mais je serai curieux
de trouver des petit exemples d'utilisation, un tutoriel en somme....
Je trouve le principe assez étrange et complexe en tout cas...
Forum Programmation.c Utilisation de Oprofile.
Bonjour,
Après un peu de boulot sur xvid, j'ai réussi a rendre le décodeur environ 25% plus rapide... ces optims ont été le fruit de la règle maîtresse en la matière:
Avant d'optimiser une fonction, il faut s'abstenir de l'appeler.
En effet, le décodeur étant un peu laissé à l'abandon, aucun dev n'avait fait l'effort de vérifier qu'on ne faisait que le strict minimum (ie: pas de répétition inutile d'une étape de décodage)... et pire, dû à quelques changements hâtifs (…)
Après un peu de boulot sur xvid, j'ai réussi a rendre le décodeur environ 25% plus rapide... ces optims ont été le fruit de la règle maîtresse en la matière:
Avant d'optimiser une fonction, il faut s'abstenir de l'appeler.
En effet, le décodeur étant un peu laissé à l'abandon, aucun dev n'avait fait l'effort de vérifier qu'on ne faisait que le strict minimum (ie: pas de répétition inutile d'une étape de décodage)... et pire, dû à quelques changements hâtifs (…)
Forum Programmation.c Projet utilisant libglade
Bonjour,
Je suis à la recherche d'un petit projet utilisant libglade[1].
En effet, j'ai regarder la source de dlume[2], il m'interessait car il utilisait une interface gtk et gerait des données xml.
Seulement faire l'interface gtk "à la main" c'est vite le bordel.
J'ai entendu parler de libglade c'en jamais reussir à le faire fonctionner correctement.
Je me suis donc mis à la recherche d'un projet similaire à dlume mais qui utilise libglade.
Mais, comment trouver un tel projet?
Y'a (…)
Je suis à la recherche d'un petit projet utilisant libglade[1].
En effet, j'ai regarder la source de dlume[2], il m'interessait car il utilisait une interface gtk et gerait des données xml.
Seulement faire l'interface gtk "à la main" c'est vite le bordel.
J'ai entendu parler de libglade c'en jamais reussir à le faire fonctionner correctement.
Je me suis donc mis à la recherche d'un projet similaire à dlume mais qui utilise libglade.
Mais, comment trouver un tel projet?
Y'a (…)
Forum Programmation.c IRC
Suite à vos conseils pour le signalement d'un serveur, j'ai finalement opté pour l'IRC. Je suis donc en train de coder un plugin gérant le protocole IRC pour mon serveur, d'après les specs publiées ici : http://www.irchelp.org/irchelp/rfc/(...)
Ca me permettrait ainsi de facilement créer des chans sur un serveur genre quakenet, mais j'ai vu dans les specs qu'on pouvait créer des chans "interserveur" : "There are two types of channels allowed by this protocol. One is a distributed channel which (…)
Ca me permettrait ainsi de facilement créer des chans sur un serveur genre quakenet, mais j'ai vu dans les specs qu'on pouvait créer des chans "interserveur" : "There are two types of channels allowed by this protocol. One is a distributed channel which (…)
Forum Programmation.c Plugin gaim pour ggz
S'lu tlm
Explication du titre:
Je cherche à faire un plugin pour gaim de ggz(j'ai remarqué, par rapport à l'époque où ma soeur était encore sous windows avec msn messenger, qu'elle utilisait plus souvent les jeux que la conférence (que ce soit sonore ou visuel))(GGZ=GGZ Gaming Zone[1])
Seulement voilà bien que je sache plus ou moins programmer en C, je ne sais absolument pas faire de plugin gaim, j'envisage de regarder les plugins deja existant mais quand je vois que (…)
Explication du titre:
Je cherche à faire un plugin pour gaim de ggz(j'ai remarqué, par rapport à l'époque où ma soeur était encore sous windows avec msn messenger, qu'elle utilisait plus souvent les jeux que la conférence (que ce soit sonore ou visuel))(GGZ=GGZ Gaming Zone[1])
Seulement voilà bien que je sache plus ou moins programmer en C, je ne sais absolument pas faire de plugin gaim, j'envisage de regarder les plugins deja existant mais quand je vois que (…)
Forum Programmation.c Trouver des serveurs
Dans pas mal de jeux ou d'autres applications réseau, on peut facilement obtenir une liste des serveurs actifs. Pour l'instant, j'update une liste d'ip sur mon ftp et je note son adresse dans un fichier de conf pour y accéder, mais ça ne me satisfait pas du tout : pas propre, pas sécurisé, pas évolutif... Comment ce genre de 'détection' se programme ?
Forum Programmation.c Algo en C, quel livre choisir
Bonjour,
Suite à mon post algo: ne pas réinventer la roue (http://linuxfr.org/forums/19/2562.html(...))
On m'a conseillé la lecture d'ouvrages sur les algorithmes en C.
avec entre autres:
Voila en bref, j'hésite car (…)
Suite à mon post algo: ne pas réinventer la roue (http://linuxfr.org/forums/19/2562.html(...))
On m'a conseillé la lecture d'ouvrages sur les algorithmes en C.
avec entre autres:
- The Art of Computer Programming de Donald E. Knuth http://www.amazon.fr/exec/obidos/ASIN/0201038218/qid=1090418970/sr=(...) Que je n'arrive pas à trouver.
- Algorithmes en langage C : Cours et exercices de Robert Sedgewick http://www.amazon.fr/exec/obidos/ASIN/2100053310/qid=1090418417/br=(...)
- Que pensez vous de ce livre : Introduction à l'algorithmique : Cours et exercices de Cormen, Leiserson, Rivest http://www.amazon.fr/exec/obidos/ASIN/2100039229/ref=pd_sim_dp_1/40(...)
Voila en bref, j'hésite car (…)
Forum Programmation.c Plugins
Bonjour à tous,
Toujours dans le cadre du développement de mon petit serveur, je suis amené à utiliser des plugins (pour lui permettre d'utiliser plusieurs protocoles simultanément). J'ouvre donc le plugin avec dlopen(), puis je cherche le symbole de la fonction ProtoIni() qui retourne un tableau contenant des pointeurs vers les fonctions du plugin. Et là, je me pose une question existentielle : est-ce que ces pointeurs restent valides après un dlclose() ? Sont-ils même encore valides quand je les (…)
Toujours dans le cadre du développement de mon petit serveur, je suis amené à utiliser des plugins (pour lui permettre d'utiliser plusieurs protocoles simultanément). J'ouvre donc le plugin avec dlopen(), puis je cherche le symbole de la fonction ProtoIni() qui retourne un tableau contenant des pointeurs vers les fonctions du plugin. Et là, je me pose une question existentielle : est-ce que ces pointeurs restent valides après un dlclose() ? Sont-ils même encore valides quand je les (…)
Forum Programmation.c Sémaphore SystemV...
Bonjour,
Mon programme C est confronté à un problème typique de readers/writers devant accéder à la même ressource.
J'utilise donc les sémaphores et j'en crée deux dans le main :
semid = semget (IPC_PRIVATE, 2, 0666);
if (semid < 0)
{
perror("semget planté");
exit(EXIT_FAILURE);
}
up(0);
up(1);
La fonction up est
int up(int sem_nbr)
{
struct sembuf buf;
buf.sem_num = sem_nbr;
buf.sem_op = 1;
if ((semop(semid, &buf, 1)) < 0)
{
printf("semup failed on %d!!\n", sem_nbr);
fflush(NULL);
exit(EXIT_FAILURE);
}
printf("Up (…)
Mon programme C est confronté à un problème typique de readers/writers devant accéder à la même ressource.
J'utilise donc les sémaphores et j'en crée deux dans le main :
semid = semget (IPC_PRIVATE, 2, 0666);
if (semid < 0)
{
perror("semget planté");
exit(EXIT_FAILURE);
}
up(0);
up(1);
La fonction up est
int up(int sem_nbr)
{
struct sembuf buf;
buf.sem_num = sem_nbr;
buf.sem_op = 1;
if ((semop(semid, &buf, 1)) < 0)
{
printf("semup failed on %d!!\n", sem_nbr);
fflush(NULL);
exit(EXIT_FAILURE);
}
printf("Up (…)
Forum Programmation.c ecrire la liste des processus utilisateurs dans un fichier texte
Salut à tous,
j'ai un problème, j'aimerai écrire la liste des processus d'un utilisateur dans un fichier et recuperer aléatoirement deux de ces numeros. je suis bloqué au niveau de la création du fichier. J'utilise le code suivant:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main ()
{
/* Liste des arguments passés à l'appel system execvp*/
char* arg_list[] = {
"ps", /* nom du programme.*/
"-u",
"gadiri", //nom d'un utilisateur
"-o",
"pid",
"--no-headers",
">id_proc.txt", /* redirection vers (…)
j'ai un problème, j'aimerai écrire la liste des processus d'un utilisateur dans un fichier et recuperer aléatoirement deux de ces numeros. je suis bloqué au niveau de la création du fichier. J'utilise le code suivant:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main ()
{
/* Liste des arguments passés à l'appel system execvp*/
char* arg_list[] = {
"ps", /* nom du programme.*/
"-u",
"gadiri", //nom d'un utilisateur
"-o",
"pid",
"--no-headers",
">id_proc.txt", /* redirection vers (…)
Forum Programmation.c Essai de code
Quelqu'un pourrait-il compiler le programme situé sur http://penso.info/tmp/server.c(...) avec une machine non Linux (un BSD par exemple). Ca utilise glib et gnet (http://www.gnetlibrary.org(...)).
Compiler avec genre :
gcc -I/usr/include/gnet-2.0/ -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include/ -I/usr/lib/gnet-2.0/include/ -Wall -Wunused -ggdb -c server.c -o server.o
gcc -o server -ggdb -lgnet-2.0 server.o
Compiler, lancer le serveur, se connecter avec un telnet localhost 10202, puis faire un goret CTRL SHIFT 5 et me dire si le serveur fait un SIGPIPE, ou non ?
MERCI :)
Compiler avec genre :
gcc -I/usr/include/gnet-2.0/ -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include/ -I/usr/lib/gnet-2.0/include/ -Wall -Wunused -ggdb -c server.c -o server.o
gcc -o server -ggdb -lgnet-2.0 server.o
Compiler, lancer le serveur, se connecter avec un telnet localhost 10202, puis faire un goret CTRL SHIFT 5 et me dire si le serveur fait un SIGPIPE, ou non ?
MERCI :)
Forum Programmation.c RAD
Bonjour à tous,
J'ai quasiment achevé mon application serveur, je dois maintenant penser à l'élaboration du client graphique. L'idéal serait qu'il soit portable Linux, Win32 et MacOS. Je suis assez tenté par Gambas, qui me permettrait d'aller très vite, mais je ne sais pas s'il est possible de compiler du code Gambas sous Win32 ni MacOS...
Je souhaiterais avoir vos impressions sur les outils RAD que vous utilisez pour faire mon choix.
J'ai googlé un peu et les IDE suivantes (…)
J'ai quasiment achevé mon application serveur, je dois maintenant penser à l'élaboration du client graphique. L'idéal serait qu'il soit portable Linux, Win32 et MacOS. Je suis assez tenté par Gambas, qui me permettrait d'aller très vite, mais je ne sais pas s'il est possible de compiler du code Gambas sous Win32 ni MacOS...
Je souhaiterais avoir vos impressions sur les outils RAD que vous utilisez pour faire mon choix.
J'ai googlé un peu et les IDE suivantes (…)
Forum Programmation.c Occupation CPU
Salut à vous,
Je suis en train de coder un petit serveur en utilisant les pthreads. Le problème, c'est que le thread faisant tourner la fonction serveur utilise 99% du CPU, à cause des i/o non bloquantes. Le code ressemble à ça :
void *server(void)
{
....while ( contrôle du serveur)
....{
......../* Prépare le select à grand coup de FD_SET */
......../* Prépare la structure timeval, avec un timeout de 5000 uS */
........select
......../* Teste le set de (…)
Je suis en train de coder un petit serveur en utilisant les pthreads. Le problème, c'est que le thread faisant tourner la fonction serveur utilise 99% du CPU, à cause des i/o non bloquantes. Le code ressemble à ça :
void *server(void)
{
....while ( contrôle du serveur)
....{
......../* Prépare le select à grand coup de FD_SET */
......../* Prépare la structure timeval, avec un timeout de 5000 uS */
........select
......../* Teste le set de (…)