Eliminar \ n después de scanf () que lee entero

Soy crudo y escribí muchos progtwigs básicos. Hay algo mal en mi nuevo progtwig de horarios. Quiero calcular el total de recetas del parque y escribir en pantalla con el número de automóvil y las horas. Esta secuencia debe ser la carga de horas de coche. En mi progtwig, solo hay scanf () preguntando horas al usuario. El usuario escribió hora e ingresó, el progtwig obtuvo una nueva línea. Quiero salir así.

Car Hours Charge 1 5 3.00 

Pero la salida del progtwig es como

 Car Hours Charge 1 5 3.00 

Este es mi código fuente del progtwig:

 #include double calculateCharges ( double time1 ); int main( void ) { //open main double time; int i; double TotalCharges=0, TotalTime=0; printf("Car\tHours\tCharge\t\n"); for(i=1;i<=3;i++) //there is 3 cars checkin { //open for printf("%d\t",i); scanf("%lf", &time); printf("\t"); TotalTime+=time; printf("%lf",calculateCharges(time) ); // fonks calculate TotalCharges+=calculateCharges(time); // for total charge puts(""); } // end for } // end main double calculateCharges ( double time1 ) { //open fonk double totalC=0; if( time13) // after 3 hours, each hours cost 0.5 dolars { //open else if totalC+=2+(time1-3)*0.5; } //end else if return totalC; } // end fonk 

Por lo que sé, este es un “problema” vinculado al terminal. Cuando escriba algo en el terminal, su entrada no se enviará al progtwig hasta que presione Entrar e ingresar agregará una nueva línea.

Lo que tiene que hacer es cambiar el comportamiento del terminal, para que todo lo que escriba se envíe inmediatamente al progtwig.

Echa un vistazo a esta pregunta, la respuesta principal te mostrará cómo hacer lo que quieres hacer: Cómo evitar presionar Enter con cualquier getchar ()

Las funciones de entrada estándar de C solo comienzan a procesar la entrada cuando presiona la tecla “Enter”. Mientras tanto, cada tecla que presiona agrega un carácter a un búfer de teclado.

Básicamente, cuando utiliza la función scanf, no lee el búfer hasta que se presiona la tecla “Enter”.

Hay soluciones para pasar esto, pero no con la biblioteca C estándar.

¡Aclamaciones!

Edición: el código siguiente no sigue las bibliotecas estándar de C. Sin embargo, hace lo que pides 🙂

 #include  #include  #include  double calculateCharges ( double time1 ); int main( void ) { //open main double time; int i,j = 0; double TotalCharges=0, TotalTime=0; char chTime[10]; printf("Car\tHours\tCharge\t\n"); for(i=1;i<=3;i++) //there is 3 cars checkin { //open for printf("%d\t",i); // Input the time j = 0; memset(chTime, '\0', 10); while ( 1 ) { chTime[j] = getch(); // User pressed "Enter"? if ( chTime[j] == 0x0d ) { chTime[j] = '\0'; break; } printf("%d", atoi(&chTime[j])); j++; } // Convert to the correct type time = atoi(&chTime[0]); TotalTime+=time; printf("\t%lf",calculateCharges(time) ); // fonks calculate TotalCharges+=calculateCharges(time); // for total charge puts(""); } // end for } // end main double calculateCharges ( double time1 ) { //open fonk double totalC=0; if( time1<=3) // untill 3 hours, for 2 dolars { //open if totalC+=2.00; } //end if else if(time1>3) // after 3 hours, each hours cost 0.5 dolars { //open else if totalC+=2+(time1-3)*0.5; } //end else if return totalC; } // end fonk