为什么没有按我的意愿进行输入?

时间:2018-11-21 16:12:28

标签: c string input

在此程序中,我想输入一个包含一些整数的字符串。如果未给出任何值,则程序将显示总金额。

但是在这里,在第一种情况下,如果我使用带数字的字符串,那么会有2个输出。

示例输入:

  

4

     

捐赠100

     

报告

     

捐赠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 :(得分:1)

只需添加日志记录,答案将显而易见:

#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值的期望是不正确的。