Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [c] fgets e out

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    56

    [c] fgets e out

    nella piccola funz. non mi torna qualcosa:
    codice:
    #include <stdio.h>
    #define dim 300
    int riempimento_array(char array[],int dimensione);
    int main()
    {
      char array[/*dim*/]="ciao";
     // printf("inserisci la stringa        ");
    
      //fgets(array,dim,stdin);
     
      
      printf("\n\narray--> %s\n\ndimensione array-->%d\n\nriempimento--> %d",
              array,dim,riempimento_array(array,dim));
      
      getchar();
      return 0;
    }
    int riempimento_array(char array[],int dimensione)
    {
        int a=0;             //contatore 
        while(array[a]!='\0')
        {
          a++;
          }  
       return a; //(a*100.0/dimensione) ;
    }
    nella funz riempimento_array mi faccio restituire il solo contatore e out è ok ma noto
    2\n

    array--> ciao
    \n
    dimensione array-->300
    \n
    riempimento--> 4
    -------------------
    mentre chiedevo sempre 2\n?
    modifico il codice per inserire da tastiera la stringa
    codice:
    #include <stdio.h>
    #define dim 300
    float riempimento_array(char array[],int dimensione);
    int main()
    {
      char array[dim];
      printf("inserisci la stringa        ");
      fgets(array,dim,stdin);
      printf("\n\narray--> %s\n\ndimensione array-->%d\n\nriempimento--> %.2f%%",
              array,dim,riempimento_array(array,dim));
      
      getchar();
      return 0;
    }
    float riempimento_array(char array[],int dimensione)
    {
        int a=0;             //contatore 
        while(array[a]!='\0')
        {
          a++;
          }  
       return (a*100.0/dimensione) ;
    }
    out stavolta inserisco io la parola ciao da tastiera
    inserisci la stringa ciao
    2\n

    array--> ciao
    2\n

    dimensione array-->300
    \n
    riempimento--> 1.67%
    ---------------------
    riempimento ha un errore come se conteggiasse un carattere in più (lo conteggia davvero vedi dopo), la formattazione prima riga ok (niente \n) poi sempre 2\n
    modifico per verificare la variabile locale (contatore "a") se riporta 5 invece di 4
    codice:
    #include <stdio.h>
    #define dim 300
    int riempimento_array(char array[],int dimensione);
    int main()
    {
      char array[dim];
      printf("inserisci la stringa        ");
      fgets(array,dim,stdin);
      printf("\n\narray--> %s\n\ndimensione array-->%d\n\nriempimento--> %d",
              array,dim,riempimento_array(array,dim));
      
      getchar();
      return 0;
    }
    int riempimento_array(char array[],int dimensione)
    {
        int a=0;             //contatore 
        while(array[a]!='\0')
        {
          a++;
          }  
       return a;//(a*100.0/dimensione) ;
    }
    out
    inserisci la stringa ciao
    2\n

    array--> ciao
    2\n

    dimensione array-->300
    \n
    riempimento--> 5
    ------------------
    aerrore su variabile locale 5 invece di 4 forse buffer con altri caratteri ma ho provato a inserire anche la funz clean(), ma non risolvo poi fflush(stdin) non risolvo,mi potete aiutare??
    per la formattazione output non capisco perchè non la rispettà???

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Non ho capito quasi nulla ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    56
    provo a spiegare meglio
    1) la funzione fgets lascia qualcosa un invio nel buffer?? se così come toglierlo?? mi riferisco all'ultimo codice
    2)l' output non rispetta le \n ordinate dal codice perchè???
    spero di esser stato più chiaro

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da jc74
    provo a spiegare meglio
    1) la funzione fgets lascia qualcosa un invio nel buffer??


    se così come toglierlo?? mi riferisco all'ultimo codice
    array[strlen(array)-1]=0;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    56
    Originariamente inviato da oregon
    array[strlen(array)-1]=0;
    Grazie oregon
    ultima, perchè introdurre una funz su stringhe?
    per un motivo di efficienza o è una delle tante modalità, non era più semplice scalare 1 alla variabile locale (a), o forse ciò presentava inconvenienti ?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da jc74
    ultima, perchè introdurre una funz su stringhe?
    per un motivo di efficienza o è una delle tante modalità, non era più semplice scalare 1 alla variabile locale (a), o forse ciò presentava inconvenienti ?
    Non ho capito la domanda ... prova a rifarla ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.