VIM pour programmer en C ?

Résolu
Bonjour,

j'aimerais juste savoir si il y a des limitations (si on exclut lergonomie bien sur) a programmer du C avec vim

je demande car jai commencer a apprendre le C sur VIM avec un tuto fait pour CodeBlock
et bien que tres tres generalement toutes les instructions sont identiques il arrive que je tombe sur des trucs totalement different et la je galere des heures sur google pour chercher des explications

donc en fait je me demandais si cetais pour m'arriver souvent

jvous remercie davance :)

4 réponses

Résumé de la discussion

Le fil explore les limites perçues de programmer en C avec Vim, notamment face à CodeBlocks et aux divergences de syntaxe qui freinent la progression lors du passage d’un IDE à l’autre. Des réponses convergent sur l’usage des printf et des pointeurs: comprendre l’affichage de l’adresse avec %p et la valeur avec %d et l’erreur fréquente liée à l’utilisation sans déférencement. Certaines réponses soulignent que le problème vient des pointeurs, pas de Vim, et recommandent de suivre un cours sur les pointeurs pour distinguer adresse et valeur. En pratique, d’autres échanges évoquent des divergences entre tutoriels et outils, et suggèrent d’éprouver les exemples pas à pas avec le compilateur pour isoler rapidement une éventuelle cause.

Bobot (l’IA à votre service)
  1. Contributeur
    bonjour
    pourquoi VIM ..
    emacs
    ou
    meme
    gedit nou kate sont quand meme plus conviviale il suffit de leur dire ce que l'on veut programmer pour avoir la couleur etc..
    tu doit etre un peu mazo
    a+
    1. Modérateur
      Salut,

      tu doit etre un peu mazo
      Alors il y a au moins deux.
      Franchement je ne donne pas Vim pour emacs ou gedit ou kate (bon si je ne fait pas de la programmation je préfère Kate à Vim ;-)))
      1. Contributeur
        re,
        mal exprimer peu etre , le mazo est pour cela
        car jai commencer a apprendre le C sur VIM avec un tuto fait pour CodeBlock 

        d'ou ma reflexion entre vim et gedit

        a+
      2. ah pour ca ...
        dsl javais mal compris ..

        mais non je ne considere pas ca comme du masochisme etant donner la facilite que jai eu jusqua date. Comme je lai deja dit tout est pratiquement semblable (bon sauf quelques exeptions)

        et de plus je crois pas qu'il y ait de tutos aussi facilement assimilable que ceux du SDZ version VIM
      3. Modérateur
        Re,

        mal exprimer peu etre
        J'ai oublié de mettre un smiley ;-), pas de problèmes pour moi, je reste avec Vim de toute façon ;-))
      4. mais toi lami20j comme tu as lair de programmer avec VIM (bon je sait pas si tu fait du C) mais tu pourrais m'aider avec mon ptit probleme ??
      5. Modérateur
        Re,

        Et c'est quoi ton petit problème exactement?
    2. mouais je crois bien que je suis un peu mazo :)

      mais je doit avouer que jai aussi bcp de tendances old school et jai trouver le petit tuto sur les hotkeys terriblement cool :)
      aussi jadoooore le look totalement epurer

      et du coups je ne voyais pas d'inconvenient a utiliser VIM si ce nest que la prise en main est toute sauf instinctive (malgre que jai appris a le manipuler quand meme asser rapidement)
      mais bon la je commence a serieusement me poser des question car il ya quelques divergences de sintaxe par rapport au tutos que je lis qui me font galerer

      donc je n'esiterai pas a aller voir les ide que tu as citer plus haut si je trouve pas de solution a mes problemes, meme si je doit avouer que ca me ferais de la peine de m'etre familiariser avec VIM pour rien

      @+
      1. Modérateur
        Re,

        Lit man 3 printf

        p       L'argument pointeur, du type void * est affiché en hexadécimal, comme avec %#x ou %#lx. 


        Avec %p tu affiche l'adresse pas la valeur contenu par variable sur la quelle pointe ton pointeur

        Voici pour voir

        lami20j@debian-acer:/mnt/sda7$ cat age.c   
        #include<stdio.h>  
        #include<stdlib.h>  
        
        int main()  
        {  
          int age = 20;  
          int *pointeurSurAge = &age;  
        
          printf("%d\n", *pointeurSurAge);   
          printf("%p\n", pointeurSurAge);   
          return EXIT_SUCCESS;  
        }  
        
        lami20j@debian-acer:/mnt/sda7$ gcc -Wall age.c   
        lami20j@debian-acer:/mnt/sda7$ ./a.out  
        20  
        0xbff4a748  
        


        Mais comme je te l'ai déjà dit, ça ce n'est pas un problème de Vim, ça n'a rien à avoir. Il s'agit de comprendre le C
        GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
        106485010510997108
        1. ouais ca je l'avait compris

          mais ce que je comprend pas c'est pourquoi ca plante avec VIM quand j'essaie d'obtenir la valeur de pointeurSurAge (qui est suposer etre l'adresse de age) en ecrivant :

          printf("%d", pointeurSurAge);

          quand ca fonctionne impecablement sur code::block
        2. Modérateur
          Re,

          Ca n'a rien avoir avec VIM.
          Avec VIM tu ne fait qu'écrire le fichier.

          Montre ce que tu fais, étape par étape.

          Code::Blocks est un IDE pas un éditeur de texte
        3. ouais j,avoue que le probleme a bcp plus de chances de venir du compilateur que de l,editeur de texte...

          mais bon voici ce que je fais etapes par etapes

          1. j"ouvre VIM et j'ecris mon ptit bout de code problematique comme ca :

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

          int main(int argc, char *argv[])
          {

          int age = 20;
          int *pointeurSurAge = &age;

          printf("\n%p\n", &age);
          printf("\n%d\n", pointeurSurAge);

          return;
          }

          2.
          apres je sauvegarde et je quitte :wq test.c

          3.
          puis finalement je compile comme ca

          pigeon@pigeon-laptop:~/Documents/C.prog$ gcc test.c

          4.
          et j'obtien :

          test.c: In function `main':
          test.c:9: warning: format `%d' expects type `int', but argument 2 has type `int *'

          en passant merci pour ton aide soutenue :)
          c'est treeeeeees apprecier
        4. Modérateur
          Re,

          Ton erreur est ici

          printf("\n%d\n", pointeurSurAge);

          il faut mettre *

          printf("\n%d\n", *pointeurSurAge); 
        5. bon tes pas le premier qui me dit ca mais si je fait ca :

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

          int main(int argc, char *argv[])
          {

          int age = 20;
          int *pointeurSurAge = &age;

          printf("\n%p\n", &age);
          printf("\n%d\n",*pointeurSurAge);
          return;
          }

          quand je compile ca donne :

          pigeon@pigeon-laptop:~/Documents/C.prog$ gcc test.tableau.c
          pigeon@pigeon-laptop:~/Documents/C.prog$ ./a.out

          0xbff5f21c

          20

          Ce qui n"est pas du tout ce que je veut afficher car 20 c'est la valeur de age
          et moi je veut la valeur de pointeurSurAge (qui est suppose etre 0xbff5f21c)