¿Cómo puedo leer una línea de números de stdin y calcular su promedio?

¿Cómo puedo contar y extraer una serie de elementos de stdin?

Por ejemplo, len () está fácilmente disponible en Python, pero no en C?

Estoy tratando de calcular un promedio, cuando el usuario ingresa, por ejemplo: 1 3 5 7 8 10 11 -1

He intentado lo siguiente:

while (user_input != -1) { total += user_input; scanf ("%d", &user_input); //cannot work average = total / ... } printf("Average = %f\n", average); 

Tendrás que mantener un contador para hacer lo que estás tratando de hacer. es sólo un int counter = 0; y en el bucle: counter++

 int counter = 0; while (user_input != -1) { total += user_input; counter ++; scanf ("%d", &user_input); } average = total / counter; printf("Average = %f\n", average); 

obviamente, tendrás que comprobar si scanf() devolvió al menos 1

— EDITAR — el siguiente progtwig (que corresponde al progtwig anterior) es VÁLIDO y funciona según sea necesario. Las personas que no entienden cómo funciona scanf() deben mantenerse al margen:

 #include  int main(int argc, char *argv[]) { int total = 0; float average = 0.0f; int userinput = 0; int counter = -1; while(userinput != -1){ counter ++; if(scanf("%d",&userinput) == 1 && userinput != -1){ total += userinput; } } average = ((float)total/(float)counter); printf("Average = %f", average); return 0; } 

Entrada: 10 20 30 40 50 60 -1 Salida: Average = 35

De su pregunta y comentarios modificados, parece que lo que realmente quiere hacer es leer una línea de entrada del usuario y luego extraer los números de esa línea de entrada.
La respuesta es que no puedes hacer eso usando scanf . Necesitas usar fgets para leer la línea de la stdin y luego debes extraer los números de esa línea de lectura. Aquí hay un
Progtwig de muestra rápida :

 #include int main() { char line[1024], *beg, *end; long readvalue; while (fgets(line, sizeof(line), stdin)) { beg = line; for (beg = line; ; beg = end) { readvalue = strtol(beg, &end, 10); if (beg == end) break; printf("[%d]",readvalue); } } return 0; } 

Entrada:

 1 3 5 7 8 10 11 -1 

Salida:

 [1][3][5][7][8][10][11][-1]