Я написал небольшой код кода, и с моей точки зрения это очень странно. Таким образом, программа считывает дату и 2015-11-30 мес. Затем мне нужно будет получить число дней недели, сравнивая с массивом значений. Вот код:scanf чтение 3 числа и 1 строка
#include <stdio.h>
#include <stdio.h>
#include <string.h>
typedef struct Date
{
int d, m, y;
} date;
int main(void) {
char wdays[][7] = {"Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"};
date dt;
char wday[2];
printf("Input date and day of week.\nFor example: 2015-11-30 Mo\n");
scanf("%d-%d-%d %2c\n", &dt.y, &dt.m, &dt.d, wday);
printf("%d-%d-%d %s\n", dt.y, dt.m, dt.d, wday);
if (strcmp(wdays[0], wday) == 0) printf("Compare Ok");
printf("%d\n", wday[2]);
return 0;
}
Проблема заключается в том, что WDAY [2] не пусто и сравнения со значениями из wdays терпит неудачу (I вход 2015-11-30 Мо). Не могли бы вы объяснить мне, почему это не пусто? Я объявил, что это длина двух символов, и я читаю 2 символа с помощью scanf.
Дополнительные вопросы: 1) Если я поставлю «char wday [1];» вместо «char wday [2]»; то WDAY содержит только 2 символов, но dt.d читает неправильно, и я получаю 111 (код буквы «о») вместо 30.
2) Я также пытался читать, как это
scanf("%d-%d-%d %s\n", &dt.y, &dt.m, &dt.d, wday);
Но dt.d также читает не так, даже с «char wdays [2];»
Таким образом, я чувствую, что у меня что-то отсутствует в scanf или массивах char. Не могли бы вы помочь мне разобраться?
Проверить ответ. Дайте мне знать результат – GNKeshava