Использование scanf для определенных входов

Если вы хотите проверить все присутствующие вами ключи, вы можете пойти с этим:

Object.values(Data).filter(function(data){return data["heritage"] && data["description"] && data["value"]})
-1
задан Mohammadreza Farahani 19 January 2019 в 14:19
поделиться

1 ответ

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;
}
0
ответ дан chux 19 January 2019 в 14:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: