nella piccola funz. non mi torna qualcosa:
nella funz riempimento_array mi faccio restituire il solo contatore e out è ok ma notocodice:#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) ; }
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
out stavolta inserisco io la parola ciao da tastieracodice:#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) ; }
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
outcodice:#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) ; }
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à???

Rispondi quotando
