Scanf i operatory

Odpowiedz Nowy wątek
2008-12-09 22:02
Satson
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ę.

Pozostało 580 znaków

2008-12-10 08:45
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;
}

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

2008-12-10 14:59
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);

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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