¿Cómo leer hasta EOF e imprimir los números pares / impares ingresados?

Tengo el siguiente código C que lee las entradas del usuario hasta el final del archivo (ctrl + d) y las almacena en una matriz. Luego, debe imprimir todos los números impares en una línea y luego los números pares en otra línea. Por alguna razón no está funcionando como se esperaba.

Cuando entro en lo siguiente:

1 2 4 16 32 64 128 256 512 1024 2048 4096 the output is: Odd numbers were: Even numbers were: 2 16 64 256 1024 4096 Expected output: Odd numbers were: 1 Even numbers were: 2 4 16 32 64 128 256 512 1024 2048 4096 

El código está abajo:

 #include  int main(void){ int array[1000]; int i,j,k; int counter = 0; for(i=0; scanf("%d", &array[i]) != EOF; i++){ scanf("%d", &array[i]); counter = counter+1; } printf("Odd numbers were: "); for(j=0; j<counter; j++){ if(array[j]%2 != 0){ printf("%d ", array[j]); } } printf("\n"); printf("Even numbers were: "); for(k=0; k<counter ; k++){ if(array[k]%2 == 0){ printf("%d ", array[k]); } } printf("\n"); } 

Hay una solución más fácil para su problema.

Espero que te guste

 #include int main() { int num,od = 0, ev = 0; int odd[1000],even[1000]; while(scanf("%d",&num) == 1) { if(num%2==0) { even[ev] = num; ev++; } else { odd[od] = num; od++; } } printf("Odds numbers are: "); for(int i = 0;i 

La salida del progtwig coincide con la salida esperada

Feliz codificacion

Bueno, has aceptado un enfoque completamente diferente, pero tu ejemplo fue incorrecto porque hiciste un scanf en cada etapa del bucle, y luego otro dentro del cuerpo for , así que hiciste dos scanf ‘s en cada paso del bucle, lo que hizo que el segundo Valor para matar al primero en el elemento del arreglo i . Esto te hizo perder la mitad de los elementos leídos y explica la salida que obtuviste. El solo hecho de colocar el scanf dentro del cuerpo del bucle haría que funcione bien, probablemente.