2011-12-09 13 views
19

Wydaje mi się, że dokładnie przeczytałem całą dokumentację printf(), ale nie mogłem znaleźć sposobu na wydrukowanie, powiedzmy, elementów 10-elementowej tablicy float(s).Czy istnieje sposób, aby printf() poprawnie wydrukowała tablicę (z float, powiedzmy)?

Np jeśli mam

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

Następnie chciałbym mieć jedno oświadczenie takie jak

printf("what_do_I_put_here\n", foo); 

Które wydrukować coś wzdłuż linii:

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

Czy można to zrobić w waniliowym C?

+5

używam coś takiego '#define printarr (FMT, DAT, len) \t for (int i = 0; i DipSwitch

Odpowiedz

23

trzeba iteracyjne thru elementów tablicowych

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

lub utworzyć funkcję, która zwraca ułożone sprintf, a następnie wydrukować go z

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

Masz pętli tablicy i printf() każdego elementu:

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

printf("\n"); 
2

Nie sądzę, istnieje sposób, aby wydrukować tablicę na ciebie w printf. Funkcja "printf" nie ma pojęcia, jak długo jest twoja tablica.

+2

Można to określić w formacie. Ale nie sądzę, żeby istniał taki specifier. – cnicutar

1

Musisz iść do pętli:

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

Istnieje brak pojedynczej instrukcji w języku, który mówi "wydrukuj całą tablicę na ekranie". Każdy element tablicy musi być wydrukowany na ekranie osobno.

Ale nie martw się, pętle są tam, aby zaoszczędzić !, Chyba twoje pytanie było tylko wiedzieć, czy istnieje sposób, i przypuszczam, osoby z 5k powtórzeń na SO nie trzeba zobaczyć fragment kodu, aby wiedzieć, jak zaimplementowane są pętle!

+17

Może nie, ale pytania są dostępne dla wszystkich, nawet dla osób z 0 powtórzeń;) –

-4

można wydrukować go jako ciąg:

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

C nie jest programowania obiektowego (OOP) języka. Więc nie możesz używać właściwości w OOP. Na przykład. Nie ma właściwości .length w C. Więc musisz użyć pętli do swojego zadania.

-1

Szczerze mówiąc Wszystkie są dobre, ale będzie to łatwe, jeśli okaże się bardziej efektywne, jeśli ktoś użyje n numerów czasowych i pokaże je na osobności. To też będzie dobra opcja. Nie predefiniowana zmienna tablicowa pozwala użytkownikowi definiować i wyświetlać wynik. Tak ..

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; 
} 
Powiązane problemy