2011-12-09 23 views
19

Credo di aver letto attentamente l'intera documentazione di printf() ma non ho trovato alcun modo di stamparlo, ad esempio, gli elementi di una serie di 10 elementi di float(s).C'è un modo per avere printf() correttamente stampare una matrice (di float, per esempio)?

Ad esempio, se ho

float[] foo = {1., 2., 3., ..., 10.}; 

Poi mi piacerebbe avere una singola dichiarazione come

printf("what_do_I_put_here\n", foo); 

Che sarebbe stampare qualcosa sulla falsariga di:

1. 2. 3. .... 10. 

C'è un modo per farlo in vaniglia C?

+5

io uso qualcosa come '# define printarr (fmt, dat, len) \t for (int i = 0; i DipSwitch

risposta

23

è necessario iterare attraverso gli elementi della matrice

float foo[] = {1, 2, 3, 10}; 
int i; 
for (i=0;i < (sizeof (foo) /sizeof (foo[0]));i++) { 
    printf("%lf\n",foo[i]); 
} 

o creare funzione che restituisce impilati snprintf e poi stamparlo con

printf("%s\n",function_that_makes_pretty_output(foo)) 
4

si deve scorrere l'array e printf() ogni elemento:

for(int i=0;i<10;++i) { 
    printf("%.2f ", foo[i]); 
} 

printf("\n"); 
2

io non credo che ci sia un modo per stampare array per voi in printf. La funzione "printf" non ha idea di quanto sia lungo il tuo array.

+2

Che potrebbe essere specificato nel formato. Ma non penso che esista un tale specificatore. – cnicutar

1

Hai bisogno di andare per un ciclo:

for (int i = 0; i < sizeof(foo)/sizeof(float); ++i) 
    printf("%f", foo[i]); 
printf("\n"); 
11

C'è nessuna singola istruzione nella lingua che dice "stampa un'intera matrice sullo schermo". Ogni elemento dell'array deve essere stampato sullo schermo singolarmente.

ma non preoccupatevi, i cicli sono lì per salvare voi !, Immagino che la tua domanda era solo per sapere se c'è un modo e suppongo una persona con 5k ripetizioni sulla quindi non hanno bisogno di vedere uno snippet di codice per sapere come sono implementati i loop!

+17

Forse non lo fa, ma le domande sono qui per essere disponibili per tutti, anche per le persone con 0 ripetizioni;) –

-4

è possibile stampare come stringa:

printf("%s\n", foo); 
1

C non è programmazione orientata agli oggetti (OOP) lingua. Quindi non puoi usare le proprietà in OOP. Per esempio. Non esiste una proprietà .length in C. Quindi è necessario utilizzare i loop per l'attività.

-1

Per essere onesti Tutti sono buoni ma sarà facile se o più efficiente se qualcuno usa n numeri di tempo e li mostra in out.so preferisce questa sarà una buona opzione. La variabile di array predefinita non consente all'utente di definire e mostrare il risultato. Ti piace questa ..

int main() 
{ 
    int i,j,n,t; 
int arry[100]; 
    scanf("%d",&n); 
    for (i=0;i<n;i++) 
    { scanf("%d",&t); 
     arry[i]=t; 
    } 
for(j=0;j<n;j++) 
    printf("%d",arry[j]); 

return 0; 
} 
Problemi correlati