Если вы хотите проверить все присутствующие вами ключи, вы можете пойти с этим:
Object.values(Data).filter(function(data){return data["heritage"] && data["description"] && data["value"]})
1) Избегайте формата строки без ширины, такого как "%[aeiou]"
- он подвержен переполнению.
2) Проверьте scanf()
возвращаемое значение.
Чтобы избежать ограничений, таких как 10, считывайте ввод в цикле.
int main(void) {
char z[10];
while (scanf("%9[aeiou]",z) == 1) {
printf("%s",z);
}
printf("\n");
return 0;
}
Если код должен читать ввод, например xxxaxxxaxxx
, и выводить aa
только с scanf()
, требуется больше работы.
Чтобы было ясно, scanf()
не лучший инструмент для достижения этой цели.
Некоторое непроверенное представление о том, что нужно.
int main(void) {
do {
int cnt;
char z[10];
while ((cnt = scanf("%9[aeiou]",z)) == 1) {
printf("%s",z);
}
if (cnt == EOF) {
break;
}
// Find the character that stopped scanning
if ((cnt = scanf("%1[^aeiou]",z)) == 1) {
if (z[0] == '\n') {
break;
}
} else {
break;
}
}
printf("\n");
return 0;
}