почему ввод не принимается так, как я хотел? - PullRequest
0 голосов
/ 21 ноября 2018

В этой программе я хочу получить вход, где будет строка с некоторым int.Если никакие значения не были даны, программа просто покажет общую сумму.

Но здесь, в первомВ случае, если я использую строку с номером, то вывод 2.

Пример ввода:

4

пожертвовать 100

report

пожертвовать 500

Пример вывода:

0

100

100

0

Но обратите внимание, здесь у меня есть шанс 3 раза ввести строку, но выводится 4 раза. Итак, кто-нибудь может сказать мне, почему эта программа ведет себя странно?

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int T, total=0, val=0;
    char  input1[20];

    scanf("%d",&T);

    while(T--)
    {
        scanf(" %s",input1);
        val=-1;

        val=atoi(input1);
        total+=val;

        printf("\nInput=\"%s\" val=\"%d\"\n", input1, val);

        if(val != -1)
            printf("%d\n",total);

    }
}

1 Ответ

0 голосов
/ 21 ноября 2018

Просто добавьте ведение журнала, и ответ будет очевиден:

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int T, total=0, val=-1;
    char  input1[20];

    scanf("%d",&T);

    while(T--)
    {
        scanf(" %s",input1);
        val=-1;

        val=atoi(input1);
        total+=val;

        printf("\nInput='%s' val='%d'\n", input1, val);

        if(val != -1)
            printf("%d\n",total);

    }
}

Затем запустите его и введите его:

4
donate 100

Input='donate' val='0'
0

Input='100' val='100'
100
report

Input='report' val='0'
100
donate 500

Input='donate' val='0'
100

Как видите, вы ожидаете, что вы 'я каким-то образом получаю значение -1 в val, если atoi не было задано, число неверно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...