Partage
  • Partager sur Facebook
  • Partager sur Twitter

Espace et fgets

    21 octobre 2019 à 20:09:21

    Bonjour.

    Vous est-il déjà arrivé qu'à l'utilisation de fgets, si le flux commence par un espace, que cet espace ne soit pas récupéré ?

    fgets(line, 1025, stdin);

    Si stdin contien : " test", line contient "test" et non " test".


    Quelqu'un aurait-il une solution ?

    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      21 octobre 2019 à 20:21:43

      Hello,

      #include <stdio.h>
      
      int main(void) {
      	char buffer[64];
      	
      	printf("?");
      	fgets(buffer,sizeof(buffer),stdin);
      	
      	char *s=buffer;
      	while(*s)
      		printf("0x%02x ",*s++);
      	
      	return(0);
      }
      

      donne bien le résultat attendu

      -
      Edité par edgarjacobs 21 octobre 2019 à 20:24:24

      • Partager sur Facebook
      • Partager sur Twitter

      On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

        21 octobre 2019 à 20:37:04

        Julien Bulot a écrit:

        Vous est-il déjà arrivé qu'à l'utilisation de fgets, si le flux commence par un espace, que cet espace ne soit pas récupéré ?

        Non !

        Ton erreur vient d'ailleurs !

        • Partager sur Facebook
        • Partager sur Twitter
          23 octobre 2019 à 13:22:16

          Voici mon code

          int main()
          {
              int L;
              scanf("%d", &L);
              int H;
               scanf("%d", &H); fgetc(stdin);
              char T[257];
              fgets(T, 257, stdin); fgetc(stdin);
              char **ROW = malloc(sizeof(char[H]));
              for (int i = 0; i < H; i++) {
                  ROW[i] = malloc(sizeof(char[1025]));
                  fgets(ROW[i], 1025, stdin);
                  fprintf(stderr, "%s\n", ROW[i]);
              }
          }

          Les données d'entrée sont : 

          4
          5
          E
           #  ##   ## ##  ### ###  ## # # ###  ## # # #   # # ###  #  ##   #  ##   ## ### # # # # # # # # # # ### ### 
          # # # # #   # # #   #   #   # #  #    # # # #   ### # # # # # # # # # # #    #  # # # # # # # # # #   #   # 
          ### ##  #   # # ##  ##  # # ###  #    # ##  #   ### # # # # ##  # # ##   #   #  # # # # ###  #   #   #   ## 
          # # # # #   # # #   #   # # # #  #  # # # # #   # # # # # # #    ## # #   #  #  # # # # ### # #  #  #       
          # # ##   ## ##  ### #    ## # # ###  #  # # ### # # # #  #  #     # # # ##   #  ###  #  # # # #  #  ###  #  

          Le retour du fprintf : 

          #  ##   ## ##  ### ###  ## # # ###  ## # # #   # # ###  #  ##   #  ##   ## ### # # # # # # # # # # ### ### 
          # # # # #   # # #   #   #   # #  #    # # # #   ### # # # # # # # # # # #    #  # # # # # # # # # #   #   # 
          ### ##  #   # # ##  ##  # # ###  #    # ##  #   ### # # # # ##  # # ##   #   #  # # # # ###  #   #   #   ## 
          # # # # #   # # #   #   # # # #  #  # # # # #   # # # # # # #    ## # #   #  #  # # # # ### # #  #  #       
          # # ##   ## ##  ### #    ## # # ###  #  # # ### # # # #  #  #     # # # ##   #  ###  #  # # # #  #  ###  #  

          La première ligne n'est pas la bonne. Il manque un espace.




          • Partager sur Facebook
          • Partager sur Twitter
            23 octobre 2019 à 17:44:13

            Hello,

            sizeof(char[H]) ou sizeof(char[1025)) ? Ton programme ne compile pas. L'opérateur sizeof donne la taille utilisée un mémoire par un type de donnée

            -
            Edité par edgarjacobs 23 octobre 2019 à 17:45:38

            • Partager sur Facebook
            • Partager sur Twitter

            On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

            Espace et fgets

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown