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à???