Я новичок в C и пытаюсь узнать, как работают разные входы.Я написал этот код, чтобы попробовать getChar (), sscanf () и fgets ().Мой первый fgets () работает отлично, но второй пропускается после того, как я прошу пользователя ввести дату.Я использую эти функции таким образом, что они не должны использоваться.Каковы возможные способы решения этой проблемы.
Также есть какие-то другие способы получения пользовательского ввода, которые были бы более полезными при определенных сценариях.
#include <stdio.h>
#define MAX 12
#define MAX_DATE 100
int main(int argc, const char * argv[]) {
char buf[MAX];
char date[MAX_DATE];
char day[9], month[12];
int year;
printf("This code shows various ways to read user input and also how to check for input\n");
printf("Enter a String less than 11 characters for input: ");
fgets(buf, MAX, stdin); //stdin is used to indicate input is from keyboard
printf("Enter a char: ");
char inputChar = getchar(); //gets next avalible char
printf("\nThe char you entered is: "); putchar(inputChar); //puts char prints a char
printf("\nsscanf allows one to read a string and manupilate as needed.\n");
printf("\nEnter a date as follows: Day, Month, Year");
fgets(date, MAX_DATE, stdin);
sscanf(date, "%s, %s, %d", day, month, &year);
printf("\nFormatted values as follows... \n");
printf("day: %s\n", day);
printf("month: %s\n", month);
printf("year: %d\n", year);
return 0;
}
/*
Output for the code:
This code shows various ways to read user input and also how to check for input
Enter a String less than 11 characters for input: hey
Enter a char: a
The char you entered is: a
sscanf allows one to read a string and manupilate as needed.
Enter a date as follows: Day, Month, Year
Formatted values as follows...
day:
month:
year: -1205589279
Program ended with exit code: 0
*/