Scanf i operatory

0

Witam,

#include <stdio.h>

#include <string.h>

int main()
{
    int arg1, arg2;

    char op;
    char in1[20], in2[20];
 
    
    while ((scanf(" %c%d%d", &op,&arg1,&arg2) == 3)||(scanf(" %c%s%s", &op, &in1, &in2) == 3))
    {
   
 if(arg1)  printf(" %c%d%d", op,arg1,arg2);
 if(in1)  printf(" %c%s%s", op,in1,in2);
    
    }
    
    return 0;
}

Chcę żeby w zależności od tego co zostanie wczytane na wejściu to samo zostało zwrócone na wyjściu.
Jednak powyższy program nie działa tak jak bym chciał czy ktoś wie gdzie popełniam błąd? Z góry dziękuję.

0

Stawiam na operator ||.
Pamiętaj, że jeśli pirwszy argument || bedzie miał wartość true to drugi NIE BĘDZIE obliczany.
Czyli popraw to tak:

#include <stdio.h>

#include <string.h>

int main()
{
    int arg1, arg2;

    char op;
    char in1[20], in2[20];
 
    bool a,b;
    
    while( 1 )
    {
    a = (scanf(" %c%d%d", &op,&arg1,&arg2) == 3);
    b = (scanf(" %c%s%s", &op, &in1, &in2) == 3);
    if( ! ( a || b ) )
          break;
    if( arg1 )
          printf(" %c%d%d", op,arg1,arg2);
    if( inl )
          printf(" %c%s%s", op,in1,in2);
    }
    
    return 0;
}
0

Chcę żeby w zależności od tego co zostanie wczytane na wejściu to samo zostało zwrócone na wyjściu.
no raczej nie o to ci chodzi, bo taki program wyglądałby tak:

int c;
while(0 <= (c = getc(STDIN)) putc(c);

Może chodzi ci o wczytanie znaku i dwóch wyrazów i zamianę tych wyrazów na liczby jeśli się da ?

scanf(" %c%s%s", &op, &in1, &in2);
zamiana_udana = sscanf(in1, "%d", &arg1) && sscanf(in2, "%d", &arg2);

1 użytkowników online, w tym zalogowanych: 0, gości: 1