Forum Programmation.c technos cloud, rust.. Quid d'apprendre le C aujourd'hui?

Posté par  (Mastodon) . Licence CC By‑SA.
4
29
juil.
2024

Bonjour,

je m'interroge sur un apprentissage du développement de programmes informatiques
j'utilise linux et unix depuis quelques années, et windows aussi.

pour moi, au vu de la réputation qui n'est plus à faire, et de la rigueur nécessaire, je pense que le C est un très bon choix.
j'ai trouvé une chaine internet, mais je vois un peu tous les jours différents avis et astuces par rapport à leur apprentissage.

cependant, deux bémols :
1-par rapport au Rust, est ce (…)

Forum Programmation.c Je veux bien que JavaScript soit optimisé, mais quand même !...

8
26
juin
2024

Bonjour à tou(te)s,

je veux bien que JavaScript soit optimisé, mais quand même, de là à être du même ordre de grandeur que C en calcul simple je ne comprends pas ! En effet C étant un langage compilé et typé, je pensais que sur les calculs il serait au moins un ou deux ordres de grandeur plus rapide, mais pas du tout !

J'avoue : je n'avais pas retouché à C depuis au moins 10 ans, je suis donc (…)

Forum Programmation.c [résolu] Problème de dépendance dans un build meson

Posté par  . Licence CC By‑SA.
Étiquettes :
2
22
juin
2024

Je cherche à compiler la démo de la bibliothèque Shumate (widget GTK4 pour afficher des cartes).

  • j'ai créé un projet C vide à l'aide de Gnome Builder
  • j'y ai transféré le source de la démo et adapté le meson.build
  • j'ai installé la version de dev de la lib par dnf install libshumate-devel (Je suis sur Fedora 40 Workstation)
  • j'ai trouvé le nom à utiliser pour référencer la lib :
$ pkg-config --list-all | grep shumate                  
shumate-1.0  Map View for GTK

(…)

Forum Programmation.c Souris trop bavarde avec Ncurses

Posté par  . Licence CC By‑SA.
Étiquettes :
3
7
mai
2024

Bonjour,

Je travaille sur un programme Ncurses avec lequel on peut interagir avec la souris. Je souhaite en particulier pouvoir suivre les mouvements de souris même lorsque l'on n'appuie sur aucun bouton. Pour ça, j'utilise une séquence de contrôle XTerm qui active le tracking de tous les évènements de la souris :

printf("\033[?1003h\n");

(documentation)

Je teste avec le programme suivant, qui affiche la position de la souris, ainsi que les évènements de la souris (bstate) :

//gcc -o (…)

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)
(…)