Я захватываю некоторый стандартный ввод от пользователя, и если пользователь нажимает CTRL + D, я хочу отобразить сообщение об ошибке и завершить работу программы. Я думаю, возможно, моя проблема может быть связана с тем, что вы застряли в цикле while;fgets и работа с CTRL + D input
int readInput(){
char buff[10];
int count = 0;
int counter;
printf("Enter random number: ");
fgets(buff, 10, stdin);
if ((int) strtol(buff, NULL, 10) == 0){
printf("Error reading number. \n");
return 0; //This will get hit if the user presses CTRL+D at this input.
}
counter = atol(buff);
while (count < counter){
printf("Enter a label: ");
fgets(buff, 10, stdin);
if ((int) strtol(buff, NULL, 10) == 0){
printf("Error reading label");
return 0; //This will not get hit if the user presses CTRL+D at this input, but why?
//I've also tried assigning a variable to 0, breaking out of the loop using break; and returning the variable at the end of the function but that also does not work.
//the rest of the while loop continues even if user hit CTRL+D
printf("Enter Value: ");
fgets(buff, 10, stdin);
//..rest of while loop just gets other inputs like above
count++;
}
//termination happens in main, if readInput returns a 0 we call RETURN EXIT_FAILURE;
Я не понимаю, почему на первом входе, если пользователь нажимает CTRL + D, программа реагирует соответствующим образом, но второй раз она полностью игнорирует его.
Способ счетчик приращение в цикле, пока любопытный. Кроме того, подсчитывается ли когда-либо увеличение? – ryyker
Является ли ОС Linux? –
Это на машине ubuntu, да. Счет –