[C]Problem ze sprawdzaniem while

Danio126p
Użytkownik
Użytkownik
Posty: 23
Rejestracja: 8 wrz 2008, o 18:08
Płeć: Mężczyzna
Lokalizacja: Rzeszów
Podziękował: 2 razy

[C]Problem ze sprawdzaniem while

Post autor: Danio126p »

Mam taki kod:

Kod: Zaznacz cały

int main(void)
{
  struct dyn_state
  {
         unsigned int upper : 1;
         unsigned int lower : 1;
         unsigned int close : 1;
         unsigned int open  : 1;
         unsigned int car   : 2;
         unsigned int door  : 2;
  };
  
  union znak
  {
        struct dyn_state znak_st;
        unsigned short znak_val;
  };
  
  int i,j;
  
  int door_state[3][4] = 
      {
      {0,0,0,0},
      {0,0,0,0},
      {0,0,0,0}
      };
  int step_state[3][4] =
      {
      {0,0,0,0},
      {0,0,0,0},
      {0,0,0,0}
      };
  int pass_state[3][3] =
      {
      {0,0,0},
      {0,0,0},
      {0,0,0}
      };

         
  
  int pass = 0;
  int pass_in,pass_out;
  FILE *fp;
  
  fp = fopen("./input.dat", "rb");

  union znak input = {{}};
  
 
  do
  {
        input.znak_val = getc(fp);

  printf("
%5d", input.znak_val);
  printf(" $$$ %d %d %d %d %d %d", input.znak_st.door, input.znak_st.car, input.znak_st.open, input.znak_st.close, input.znak_st.lower, input.znak_st.upper);
  
  switch (input.znak_val & CAR_MASK) // wybór wagonu //
  {
  case CAR_0:
       wagon(0, input.znak_val, door_state, step_state, pass_state);
break;      
  case CAR_1:
       wagon(1, input.znak_val, door_state, step_state, pass_state);
break; 
  case CAR_2:
       wagon(2, input.znak_val, door_state, step_state, pass_state);
break;   
         };
}  
  while (input.znak_val != CAR_MASK); // to jest warunek na nastepny przystanek //

  pass += *(*(pass_state)) + *(*(pass_state+1)) + *(*(pass_state+2));
  pass_in = *(*(pass_state)+1) + *(*(pass_state+1)+1) + *(*(pass_state+2)+1);
  pass_out = *(*(pass_state)+2) + *(*(pass_state+1)+2) + *(*(pass_state+2)+2);
  
  printf("
%d %d %d
", pass, pass_in, pass_out);
  
  *(*(pass_state)+1) = 0;
  *(*(pass_state+1)+1) = 0;
  *(*(pass_state+2)+1) = 0;
  *(*(pass_state)+2) = 0;
  *(*(pass_state+1)+2) = 0;
  *(*(pass_state+2)+2) = 0;
}


  return 0;
}
Chodzi mi głównie o fragment od linii 50 - jak dać pętlę while, tak aby mi sprawdzało czy przy czytaniu znaków z pliku odczytało mi znak o kodzie ascii 56??

While ma obejmować kod od linii 50 do linii 86...

Dziękuję z góry za pomoc!
Robson309
Użytkownik
Użytkownik
Posty: 30
Rejestracja: 4 mar 2010, o 20:35
Płeć: Mężczyzna
Lokalizacja: Pruszcz Gdański
Podziękował: 3 razy
Pomógł: 5 razy

[C]Problem ze sprawdzaniem while

Post autor: Robson309 »

Nie wiem jak w czystym C ale w C++ to ja bym próbował zamienić znak na int a później porównać go if'em.
Xitami

[C]Problem ze sprawdzaniem while

Post autor: Xitami »

'8'==56==0x38
jeżeli tak to co? a jak nie to?
ODPOWIEDZ