Как получить ввод без пробела в C в другой переменной, просто изменив тип данных - PullRequest
1 голос
/ 15 июня 2019

Используя данный исходный код, я пытаюсь выполнить некоторые арифметические операции. Данный вход:

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 голосов
/ 15 июня 2019

Заменить scanf("%d%s%d",&a,&b[0],&c); на scanf("%d %1[+-*/]%d",&a,b,&c);. Значение %1[+-*/] состоит в том, чтобы потреблять ровно один символ, принадлежащий к набору из четырех операторов. Пробел перед ним должен занимать дополнительные пробелы.

...