2011-12-09 13 views
19

Creo que he leído detenidamente toda la documentación de printf() pero no he podido encontrar ninguna forma de imprimirla, por ejemplo, los elementos de una matriz de 10 elementos de float(s).¿Hay alguna forma de que printf() imprima correctamente una matriz (por ejemplo, de flotantes)?

Por ejemplo, si tengo

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

Entonces me gustaría tener una sola declaración como

printf("what_do_I_put_here\n", foo); 

cual sería imprimir algo en la línea de:

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

¿Hay alguna manera de hacerlo en vainilla C?

+5

utilizo algo como '# define printarr (FMT, dat, len) \t for (int i = 0; i DipSwitch

Respuesta

23

que necesita para iterar a través de los elementos del array

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

o crear función que devuelve apilados snprintf y luego imprimirlo con

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

Tienes que recorrer la matriz y printf() cada elemento:

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

printf("\n"); 
2

no creo que hay una manera de imprimir matriz para usted en printf. La función "printf" no tiene idea de cuánto tiempo es su matriz.

+2

Eso podría especificarse en el formato. Pero no creo que exista tal especificador. – cnicutar

1

Tienes que ir para un bucle:

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

Hay ninguna declaración en el idioma que dice "imprimir una matriz completa en la pantalla". Cada elemento de la matriz debe imprimirse en la pantalla individualmente.

Pero no se preocupe, los bucles están ahí para salvarte !, supongo que su pregunta era únicamente para saber si hay una manera y supongo que una persona con 5k repeticiones en lo que no necesitan para ver un fragmento de código para saber cómo se implementan los bucles

+17

Tal vez no, pero las preguntas están aquí para estar disponibles para todos, incluso para personas con 0 representantes;) –

-4

se puede imprimir como cadena:

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

C no es programación orientada a objetos lenguaje (POO). Entonces no puedes usar propiedades en OOP. P.ej. No hay una propiedad .length en C. Entonces necesita usar loops para su tarea.

-1

Ser honesto Todos Son buenos, pero será fácil si o más eficiente si alguien usa n números de tiempo y los muestra en la salida. Así que prefiero que esta sea una buena opción. No configure una variable de matriz predefinida, permita que el usuario defina y muestre el resultado. Como esto ..

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; 
} 
Cuestiones relacionadas