То, что вы хотите сделать, на данный момент не поддерживается в Google, но не в Datadog, есть и другой вариант, например, при создании политики предупреждений у вас есть возможность добавить более одного показателя в одно предупреждение, см. Ниже пример и использовать только Триггеры политики, см. ниже:
Вы можете посмотреть этот стек для более подробной информации об арифметической операции. .
Корректные взгляды программы, Ваша проблема состоит в том, что необходимо отправить EOF
(конец файла) командной строке после Вашего входа начиная со стандартного входа рассматривают как файл. Я думаю в терминале Linux, который можно нажать Ctrl+D для отправки EOF
... Я не уверен, как сделать это в другой ОС. Для тестирования этой программы, Вы могли бы хотеть измениться EOF
кому: '\n'
который заставит это останавливаться, когда Вы нажмете Enter.
Программа продолжает считывать данные с stdin
до EOF
получен, это сделано путем нажатия Ctrl-D в начале строки на консоли Unix или Ctrl-Z в начале строки в консоли Windows. После передачи сигналов EOF
таким образом, printf
функция будет выполняться, отображая количество чтения символов.
Ваш nc
двойное — использование printf("%lf", nc)
распечатать удваивается.
Попробуйте этого вместо этого
#include <stdio.h>
int main(void)
{
int nc;
for (nc = 0; getchar() != EOF; ++nc)
;
printf("%d\n", nc);
return 0;
}
Я хотел бы разъяснить ответы, данные до сих пор, потому что они, кажется, используют фразы как, "отправляют EOF", "получил EOF", "символ EOF", и т.д. Согласно комментариям (спасибо) к этому ответу, "отправляют EOF" и, "полученные EOF" являются законными условиями, но не думайте, что это - символ.
EOF не является символом вообще. Это - значение, которое возвращает getchar () (или fgetc/getc), если поток в "конце файла", или ошибка чтения происходит. Это - просто специальное значение вне диапазона символьных значений, которые getchar () возвратит, который указывает на условие ошибки или конца файла.
Это определяется стандартом C, как являющимся отрицательным, тогда как getchar возвращает символы как неподписанный символ, преобразованный в интервал.
Править: При проведении некоторого исследования, которое я должен был провести перед абзацем, я записал, что раньше был здесь, я понял, что некоторые мои предположения были абсолютно неправильными. Благодаря комментатору для указания на это.
После того как поток (такой как stdin) находится в условии конца файла, это условие может быть очищено снова с более ясным (), и getchar () может считать больше данных с stdin.
Этот код читает символы из стандартного входа. Когда Вы обычно запускаете эту программу, стандартный вход прибывает от пользователя. В этом случае нет никакого способа отправить EOF в программу.
Этот код будет работать при перенаправлении файла к стандарту в (./myprogram <tempfile.txt).
Во-первых, как упомянуто ранее Вам нужен %lf вместо %d для отображения двойного, иначе он просто отобразится, нуль все время (d для целого числа со знаком). Затем, если Вы хотите протестировать, это вручную на основанном на окнах типе ОС в некоторых символах нажимает Enter и затем pressl CtrlZ на следующей строке совершенно отдельно (это моделирует EOF). Печатным результатом будет еще один, чем количество символов (это включает CtrlZ). Также как SoapBox указал при поиске EOF обычно, взглядами тогда был Unix, где Вы передаете файл по каналу в программу через стандартный вход, это также работало бы.