C 输入的计数用逗号分隔

C count numbers entered separated by commas

我有一个代码可以检查数字是奇数还是偶数。我使用 char 输入并用逗号分隔每个数字。一切正常,但我需要计算输入了多少个数字,其中有多少是偶数。 我运行因为逗号撞墙了。我试图搜索google,但我的英语不太好,我找不到这样的功能。也许我应该循环输入数字,直到用户只需按回车键即可开始检查偶数和奇数。到目前为止我的代码:

char str[256];
 fgets (str, 256, stdin);
    char *pt;
    pt = strtok (str,",");
    while (pt != NULL) {
        int a = atoi(pt);

        if (a%2 == 0)
        {
            printf("Number is even\n");

        }
        else
        {
            printf("Number is odd!\n\n");
        }
        printf("%d\n", a);
        pt = strtok (NULL, ",");
    }

如果我们使用 variable++ 表示变量的值增加 1。

char str[256];
fgets (str, 256, stdin);
char *pt;
int odd_count = 0,even_count = 0;
pt = strtok (str,",");
while (pt != NULL) {
    int a = atoi(pt);

    if (a%2 == 0)
    {
        printf("Number is even\n");
        even_count++;
    }
    else
    {
        printf("Number is odd!\n\n");
        odd_count++;
    }
    printf("%d\n", a);
    pt = strtok (NULL, ",");
}
printf("Count of even numbers in the sequence is %d",even_count);
printf("Count of odd numbers in the sequence is %d",odd_count);
printf("Total numbers in the sequence is are %d",even_count + odd_count);

如评论中所述,当您读入每个数字时,计算读入的值的总数。然后当您检查偶数时,为此增加另一个计数器:

int countTotal = 0, countEven = 0;
while (pt != NULL) {
    int a = atoi(pt);

    countTotal++;
    if (a%2 == 0)
    {
        printf("Number is even\n");
        countEven++;
    }
    else
    {
        printf("Number is odd!\n\n");
    }
    printf("%d\n", a);
    pt = strtok (NULL, ",");
}