Forum Programmation.c Compilation et utilisation bibliothèque dynamique

Posté par  . Licence CC By‑SA.
Étiquettes :
1
21
jan.
2024

Bonjour,
Je butte depuis plusieurs heures sur un problème, où j'en suis convaincu, il ne manque qu'un petit détail.
J'ai un fichier testLib.c et un fichier d'entête testLib.h pour créer une biblio libtestLib.so

testLib.c :

#include "testLib.h"

int addition(int a, int b) {
  return a+b;
}

testLib.h :

int addition(int a, int b);

Pour compiler, j'utilise les commandes suivantes :

rm -f testLib.o
gcc -fomit-frame-pointer -O3 -Wunreachable-code -Wextra -Wall
(…)

Forum Programmation.c implémentation d'une liste chaînée en langage c

Posté par  . Licence CC By‑SA.
Étiquettes :
0
20
avr.
2023

bonjour,
je me suis acheté un bouquin: "Maîtrise des algorithmes en C" de Kyle Loudon.
j'arrive au 5eme chapitre qui parle des listes chaînées… je comprends l'algorithme, mais lors qu'il s'agit de le faire fonctionner, je tombe sur une erreur de libération de pointeur.

L'algorithme est le suivant:

list.h:

        #ifndef __LIST
        #define __LIST

        typedef struct ListElmt_{
            void *data;
            struct ListElmt_ *next;
        } ListElmt;

        typedef struct List_{
            int size;
            ListElmt
(…)

Forum Programmation.c C : gestion du répertoire de travail

Posté par  . Licence CC By‑SA.
Étiquettes :
0
15
mar.
2023

Bonjour à tous,

Je recherche le moyen le plus simple (au sens "moins de lignes de code") de récupérer le répertoire de travail d'un programme.

Supposons que le programme ait besoin d'ouvrir un fichier data.txt situé dans le même répertoire que l'exécutable. Le plus simple est d'écrire :

f=fopen("data.txt","r");

Mais si j'appelle le programme d'un autre emplacement que celui de l'exécutable, ça ne marche pas. Il faut donc récupérer le répertoire de travail.

Voici les deux méthodes les plus simples (…)

Forum Programmation.c probleme pour faire un timer précis de l'ordre de la milliseconde

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
2
26
jan.
2022

bonjour à tous,
je souhaite faire un timer via timerfd_create qui reveille mon programme toutes les 1 milliseconde (ms). j'aimerais une erreur que de 10% soit pas plus de 1.1ms. Mon programme à un timer moyen de 1ms (super :) ) mais a parfois des piques à 1,2 ms voir 1,4ms :(

Je l'ai passé en fifo priorité 99, j'ai viré toutes les interruptions venant de mon cpu8 afin d'empecher que mon processus soit interrompu (via /proc/irq/smp_affinity), j'ai bien entendu (…)

Forum Programmation.c Puissance 4, problème avec l'affichage du gagnant

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
4
déc.
2021

Bonjour,

Je suis en train d créer un puissance 4 en C mais le problème est que quand il y a 4 pions alignés le programme ne s'arrête pas en affichant le gagnant, le programme continue jusqu'à ce que la grille soit remplie.
Mais je ne vois pas le problème dans ma fonction aGagne.. Auriez vous des solutions à me proposer ?

Merci d'avance !

Mon code :

void init (int ttint_plateau[N][N]){
    int int_i
(…)

Forum Programmation.c Code assembleur incorrect généré à partir du code C (ARM Cortex-m3) ?

Posté par  . Licence CC By‑SA.
Étiquettes :
1
2
déc.
2021

Hello,

J'ai un problème avec un code assembleur généré par GCC à partir d'un code C.

J'essaie d'écrire un firmware minimal pour un microcontrôleur, le LPC1769.
Il utilise le processeur ARM Cortex-M3. Mon firmware est simple :
* Exécute une fonction nommée "reset()" lors de la réinitialisation du processeur
* Dans cette fonction, je déclare 3 variables locales : 3 pointeurs vers 3
différents registres, initialisés avec leur adresse
* Ensuite, j'écris une valeur dans chaque registre

Le problème:

Le (…)

Forum Programmation.c GDB avec Emacs

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
2
28
nov.
2021

Bonjour à tous !
J'essaye de me lancer dans le débogage de programme C en utilisant GDB avec Emacs. J'utilise pour ça gdb-many-windows qui permet d'avoir beaucoup d'informations utiles. Cependant, cette commende est censée afficher dans un des buffer le code source du programme en cours de débogage. J'ai l'option activé lorsque je tape M-x customize et j'ai de plus rajouté une ligne dans mon fichier .emacs. Cependant, gdb-many-windows n'affiche pas le source code mais un gestionnaire des buffers actuellement (…)

Forum Programmation.c erreur de segmentation sur SDL_Init

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
21
avr.
2021

bonjour,
j'utilise actuellement la SDL2. Je viens de m'y mettre.
Je sais lier les librairies vu que j'utilisais déjà la version 1.2.
Le problème est qu'après avoir lu les tuto de lazy foo, qui fonctionnent très bien en c++, une fois reformaté et compilé en c j'ai un problème avec la SDL_Init.
Voici ce que me renvoie le débogueur :

(gdb) s
76      if( SDL_Init( SDL_INIT_VIDEO ) < 0 )
(gdb) s
Program received signal SIGSEGV, Segmentation fault.
__GI___libc_free (mem=0x3)
(…)

Forum Programmation.c Warnings de compilation et résultat incorrect

Posté par  . Licence CC By‑SA.
Étiquettes :
0
2
déc.
2020

Bonjour,

Je souhaite écrite un programme qui à partir d’un tableau d’entiers d’au moins un entier, fournit le nombre de sous-séquences croissantes de ce tableau, ainsi que les indices de début et de fin de la plus grande sous-séquence.
J'ai eu des warnings de compilation dans 3 lignes (warning: assignment makes pointer from integer without a cast [-Wint-conversion]) et le résultat est incorrect, ça me donne toujours 0.
Aidez-moi SVP! je vous remercie.
Voilà mon code:

    #include <stdio.h>

    void soussequences
(…)

Forum Programmation.c Problème avec le renvoi au menu principal

Posté par  . Licence CC By‑SA.
Étiquettes :
0
19
nov.
2020

Bonjour.
Je veux écrire un programme qui affiche le menu suivant:
1- Résolution d'un polynôme de 1er degré
2- Résolution d’un polynôme de 2nd degré
3- Quitter
Après avoir fait un de ces traitement, le programme doit interroger l'utilisateur s’il veut continuer ou non. Si oui, il le renvoi au menu principal sinon il met fin à l’exécution.
J’ai fait un premier essai mais mon programme ne fait pas ça : dans un premier temps, il fait correctement le traitement (…)

Forum Programmation.c algorithme minmax

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
12
sept.
2020

Bonjour à tous,
J’essaie de programmer une petite IA sur un Puissance4.
Le problème est que je n’arrive pas à comprendre l’algorithme minmax.
En effet, cette fonction minmax est censée nous renvoyer un score.
Il faut donc qu’à chaque coup sur les 7 que tente la machine, l’algorithme minmax soit appelé à évaluer le joueur… Puis que l’on prenne le minimum des scores obtenus pas le joueur pour trouver le coup optimal pour la machine.
C’est la représentation que je (…)

Forum Programmation.c [Résolu] OpenGL GLUT référence indéfini

Posté par  . Licence CC By‑SA.
Étiquettes :
0
14
août
2020

Salut à tous :)

Finalement il suffisait de rajouter -lglut à la ligne de compilation

J'ai le problème référence indéfini lorsque je compile
J'ai installer freeglut3-dev donc normalement je suis capable de faire fonctionner ce code (enfin je crois) :

#include <stdio.h>
#include <stdlib.h>
#include <GL/glut.h>
#include <GL/freeglut.h>
#include <GL/glx.h>
#include <GL/gl.h>

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA); 
    glutInitWindowSize(1024,
(…)

Forum Programmation.c essayer de recupérer l'adresse de retour d'une fonction

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
6
22
juil.
2020

bonjour à tous,

J'essaye de récupérer l'adresse de retour stockée dans la pile puis de faire un jump sur cette adresse afin de revenir à mon main, je vous montre mon code puis vous explique ma démarche :

    int addOne ( int value )
    {
        char * ptr = (char*)&value; // la variable value est situé a RBP-0x14
        void (*adresseDeRetour) (void) = (ptr + 28);
        adresseDeRetour();
(…)

Forum Programmation.c petit probleme avec gdb et la structure pthread_mutex_t

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
25
mai
2020

Bonjour à tous,

voila je me suis fabriqué un petit programme qui fait un deadlock (via 2 threads). puis ensuite avec gdb je regarde à quelle instruction est mon programme (via backtrace), j'ai :

#0  __lll_lock_wait ()
    at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x00007f623ede4023 in __GI___pthread_mutex_lock (
    mutex=0x5571dcb2c040 <mutexDeCosmoff>)
    at ../nptl/pthread_mutex_lock.c:78
#2  0x00005571dc92b89b in callback1 ()
#3  0x00007f623ede16db in start_thread (arg=0x7f623e9e8700)
    at pthread_create.c:463
#4  0x00007f623eb0a88f in clone ()
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

je constate donc que mon thread est bloqué par le mutex : mutexDeCosmoff (…)

Forum Programmation.c Communication entre processus avec pipe() et dup2().

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
28
fév.
2020

Bonjour,

Je souhaite écrire un programme en C, qui permet d'enregistrer toutes les entrées/sorties d'un bash.
Mon idée est de créer un nouveau processus "enfant" qui va lancé le bash.
Le processus "parent" va s'occuper d'enregistrer les entrées/sorties du processus "enfant".
Pour l'instant j'essaye seulement de connecter STDIN du père a STDIN du fils et STDOUT du fils a STDOUT du père.

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

#define BUFF_SIZE 1024
#define NB_PIPE 2

int main(int argc,
(…)

Forum Programmation.c Sonar Qube faux positif…

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
26
fév.
2020

Bonjour,

J’ai un soucis, sonarqube me dit que je peux écrire en dehors d’un tableau… Je vous montre le code.

   condition = (index < taille_max);

   checkCondition(condition);

   (appelDeHook[index])(parametres);

En gros il me dit que si index >= taille_max, alors appelDeHook[index] tape à l’extérieur du tableau. Ce qui n’est pas faux, sauf que checkCondition est implémentée comme suis :

void checkCondition(int condition)
{
    if (!condition)
(…)

Forum Programmation.c tableau en c

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
7
déc.
2019

bonjour a toutes et a tous!
je suis étudiant debutant en langage de programmation c, j'ai besoin de votre aide.

j'ai fait un programme avec code block où il est demandé d'initialiser un tableau de 5 entiers et de rechercher le minimum du tableau et son indice;
j'ai fait mais juste que le resultat ne me convainc pas 100%. ca c'est le programe.

#include <stdio.h>
#include <stdlib.h>

int main()
{
  int tab[5];
  int min;
  int
(…)

Forum Programmation.c Sécurité lors de la déclaration d'un pointeur

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
8
nov.
2019

Bonjour,

J'ai ce petit code ou je déclare deux pointeurs tableau je veux savoir si juste la déclaration et l'affectation peut donner le mauvais accès à la mémoire réservée par ce pointeur ou c'est après la mauvaise utilisation de malloc qui peut causer le vol de données ou l'injection de mauvaise données.

Mon code C:

void mafonction(int* tab1, int* tab2, int len) 
{ 

int i; 
for(i = 0; i
(…)