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?- a nie , myszon 17/11/06 20:37
%i ? Bo %d to double a znak zczytywany z klawi jest 8bitowy.- 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)
- 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 - 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
- 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 - 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.
- a moze po prostu , atay 17/11/06 21:35
%1d ?_- Atay -_ - 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.
- 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 - 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 |
|
|
|
|