При запуске программы, представленной в главе 1.6 «Массивы языка программирования C», я получаю некоторые очень противоречивые результаты из окончательного printf.
Вот программа:
#include <stdio.h>
int main()
{
int c, i, nwhite, nother;
int ndigit[10];
nwhite = nother = 0;
for (i = 0; i < 10; ++i)
ndigit[i] = 0;
while ((c = getchar()) != EOF)
{
if (c >= '0' && c <= '9')
++ndigit[c-'0'];
else if (c == ' ' || c == '\n' || c == '\t')
++nwhite;
else
++nother;
}
printf("digits =");
for (i = 0; i < 10; ++i)
printf(" %d", ndigit[i]);
printf(" white space = %d \n nother = %d \n", nwhite, nother);
}
Вотисполнение: Windows PowerShell
Я сильно смущен очевидной случайностью этого.Я был бы очень признателен всем, кто может выделить то, что мне здесь не хватает, особенно учитывая, что это даже не программа моего собственного творчества: это предусмотрено самой книгой.
Спасибо.
РЕДАКТИРОВАТЬ:
Я пытался запустить программу в командной строке, в отличие от Windows PowerShell.Никаких различий в результатах.
Также я попытался добавить int в начале основного
int k = 99;
и двух printf до и после финального printf
printf("%d", k);
printf(" white space = %d \n nother = %d \n", nwhite, nother);
printf("%d", k);
Печатается только первый из двух дополнительных printf, но за счет еще 2 символов из среднего.