如何仅通过更改数据类型来获取C中不同变量中没有空格的输入

时间:2019-06-15 11:54:37

标签: c scanf user-input

通过使用给定的源代码,我试图进行一些算术运算。给定的输入是:

1
234*34

由于234*34之间没有空格,因此scanf无法正确读取它。我应该怎么做才能使scanf读取此输入并给出正确答案,而又不要在输入数字之间留出空格?

#include <stdio.h>
int arithematic(){
    int a,c,t,i=0,k,l;
    char b[100];
    scanf("%d%s%d",&a,&b[0],&c);
    if(b[0] =='+')
    t = a+c;
    if(b[0] == '-')
    t=a-c;
    if(b[0]=='*')
    t=a*c;
    k=a;
    l=c;
    while(k>0||l>0)
    {
        k/=10;l/=10;
        i++;
    }

    printf("%d\n",a);
    printf("%s",b);
    printf("%d\n",c);

    while(i>0)
    {
        printf("-");
        i--;
    }

    printf("\n%d\n",t);
}

int main(void)
{ 
    int n;

    scanf("%d",&n);
    while(n--)
   {
        arithematic();
        printf("\n");
   }
}

1 个答案:

答案 0 :(得分:0)

scanf("%d%s%d",&a,&b[0],&c);替换为scanf("%d %1[+-*/]%d",&a,b,&c);%1[+-*/]的含义是仅消耗一个字符,该字符属于四个运算符的集合。前面的空格是消耗可选的空白。