Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » Lukas12p 23:36
 » ReeX 23:35
 » Flo 23:34
 » Kool@ 23:24
 » Shark20 23:21
 » dugi 23:20
 » rulezDC 23:13
 » Qjanusz 23:13
 » Wojtekar 22:48
 » Wedrowiec 22:42
 » Conan Bar 22:41
 » DYD 22:39
 » Pawiano 22:38
 » Wedelek 22:29
 » rbxxxx 22:25
 » stefan_nu 22:22
 » Curro 22:20
 » Holyboy 22:17
 » fiskomp 22:10
 » DJopek 22:10

 Dzisiaj przeczytano
 41144 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2024
A R C H I W A L N A   W I A D O M O Ś Ć
    

C: jak scanf()-em przeczytać 1-bajtową liczbę ? , pachura 17/11/06 20:24
Cześć.

Do wczytywania liczb 4-bajtowych (int) używamy %d (ew. %i).
Do wczytywania liczb 2-bajtowych (short) używamy %hd.

Czego użyć do wczytywania liczb 1-bajtowych (char) ?

Oczywiście %c nie zadziała, bo wczyta pojedynczy znak a nie liczbę - np. sscanf("127", "%d", &c) umieści w zmiennej "c" kod ASCII cyfry "1". Natomiast sscanf("127", "%d", &c) zadziała, ale rzuci warninga: "warning: int format, different type arg (arg 3)"

Hm?

  1. a nie , myszon 17/11/06 20:37
    %i ? Bo %d to double a znak zczytywany z klawi jest 8bitowy.

    1. a nie. , pachura 17/11/06 20:56
      %d to nie double, %d to d-ecimal, to samo co %i.
      double to %lf (= long float)

  2. 1-bajtowy moze byc chyba tylko char , majlosh 17/11/06 20:52
    http://pl.wikipedia.org/.../C_(język_programowania)

    They dont know that we know they know we know

    1. Nie zrozumiałeś pytania... , pachura 17/11/06 20:58
      Wiadomo że 1-bajtowy jest tylko char, ale ja pytałem się jakiego ciągu formatującego użyć w scanf() żeby poprawnie odczytać jednobajtową liczbę i żeby kompilator nie rzucał warninga.

      Odpowiedź już znalazłem - brzmi: %hhd

  3. pff , celt 17/11/06 20:58
    char używać, żeby odczytać liczbę? Coś kręcisz, no chyba że ta "liczba" to znak: '0' do '9', a wywolanie sscanf('1',"%c",znak);
    gdzie char znak;

    Everything should be made as simple as
    possible, but no simpler

    1. Blah blah , pachura 17/11/06 21:09
      Char to liczba. Nie ma w C osobnego jednobajtowego typu do reprezentowania liczb 0-255 (-128-127). Ciąg do formatowania to osobna sprawa, %c faktycznie zadziała tak jak napisałeś, ale %hhd dokładnie tak jak napisałem w pytaniu.

  4. a moze po prostu , atay 17/11/06 21:35
    %1d ?

    _- Atay -_

    1. Też nie zrozumiałeś. , pachura 18/11/06 13:04
      Moje pytanie brzmiało:
      "Czego użyć do wczytywania liczb 1-bajtowych (char) ?"

      Zaproponowane przez Ciebie "%1d" to jedna cyfra dziesiętna.

  5. jak , celt 17/11/06 21:38
    piszesz np. '3' - to oznacza to w przypadku stałych znakowych cyfrę (a nie liczbę)

    Everything should be made as simple as
    possible, but no simpler

    1. E ? , pachura 18/11/06 13:06
      A gdzie ja napisałem o apostrofach? Przecież poniższe działa (wypisuje liczbę 120):

      char x = 100;
      char z = 20;
      printf("%hhd\n", x + z);

    
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL