Я только начинаю работать с C, и я написал очень простую программу, которая берет идентификатор сотрудника, отработанное время и зарплату и выводит заработанную заработную плату и указанный идентификатор.
Я фиксирую идентификатор с помощью fgets, однако, когда я ввожу строку символов длиннее указанного размера буфера (здесь 10), моя программа, похоже, "вылетает". Он печатает следующие два printf в той же строке, пропуская ввод для первого, что, очевидно, нарушает программу.
Когда идентификатор, захваченный с помощью fgets, равен <= размеру буфера, он работает нормально. Немного смущен относительно того, в чем проблема. Я использую кодовые блоки с компилятором GNU GCC. </p>
Спасибо.
#include <stdio.h>
int main()
{
// Initialize variables
char ID[11];
float hrs, sal;
// Get Employee's ID from user input
printf("Input the Employee's ID(Max. 10 chars): ");
fgets(ID, sizeof(ID), stdin);
// Get working hours as float from user input
printf("Input the working hrs: ");
scanf("%f", &hrs);
// Get hourly salary as float from user input
printf("Salary amount/hr: ");
scanf("%f", &sal);
// Print Employee's ID
printf("Employee's ID: %s", ID);
// Print wage based on hours worked and salary
printf("Salary = U$ %.2f", sal * hrs);
return 0;
}