|
как все же отловить eof
|
|||
---|---|---|---|
#18+
Dima T a guest пропущено... *facepalm* пропущено... Ты свой несусветный бред пробовал хотя бы раз сверять с реальностью? https://wandbox.org/permlink/Rzm67FQ6Prn59Z9U Это пример из культового учебника по С. ТС (и автор) не виноват что спустя много лет он не компилируется. Из какого ? если вы имеете ввиду K&R , то там таких примеров нет. там все примеры с завершением цикла по eof ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2020, 20:53 |
|
как все же отловить eof
|
|||
---|---|---|---|
#18+
Dima T ТС (и автор) не виноват что спустя много лет он не компилируется. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2020, 21:09 |
|
как все же отловить eof
|
|||
---|---|---|---|
#18+
Barlone getchar() возвращает int, не char. И EOF - это целое число, не совпадающее ни с одним возможным значение char. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2020, 21:38 |
|
как все же отловить eof
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2020, 22:06 |
|
как все же отловить eof
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Barlonegetchar() возвращает int, не char. Вообще-то по-жизни (то есть изначально) она возвращала именно char.Изначально — это какой год? Dimitry Sibiryakov В int её перековали относительно недавно, когда внезапно обнаружилась буква "я" в кодировке Windows-1251. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2020, 23:03 |
|
как все же отловить eof
|
|||
---|---|---|---|
#18+
a guestgetchar возвращает int уже в первом издании K&R C, в 1978 году. Ах, вот оно как. Ну, значит, я ошибался. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2020, 00:46 |
|
как все же отловить eof
|
|||
---|---|---|---|
#18+
White Owl Берешь например семейство процессоров ARM Если я достиг вершин мастерства в своей области, то об этом надо сообщить всем. Даже тем, кому до этого мастерства ещё пилить и пилить, да и область у них совершенно другая. Ну, что ж - тоже вариант ... P.S. Нахрена топикстартеру знать про ARM, если для него signed/unsigned - тёмный лес? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2020, 05:40 |
|
как все же отловить eof
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Нет в Це байтов addressable unit of data storage large enough to hold any member of the basic character set of the execution environment ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2020, 07:32 |
|
как все же отловить eof
|
|||
---|---|---|---|
#18+
a guest ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2020, 10:13 |
|
как все же отловить eof
|
|||
---|---|---|---|
#18+
Basil A. Sidorov a guest пропущено... K&R pp12-13C provides several other data types besides int and float, including: charcharacter - a single byteshortshort integerlonglong integerdoubledouble-precision floating point The size of these objects is also machine-dependent. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2020, 15:21 |
|
как все же отловить eof
|
|||
---|---|---|---|
#18+
White OwlK&R pp12-13Повторю для особо непонятливых - речь шла об имени типа, а не о том, чему он соответствует. Считаете, что формулировка была неудачной - можно обсудить отдельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2020, 16:01 |
|
как все же отловить eof
|
|||
---|---|---|---|
#18+
White Owl andron81 пропущено... Почему так уж разразились критикой? Можете прокомментировать? Поэтому заявлять что "getchar() возвращает int, не char." и делать из этого выводы не особо полезно. Во вторых, если почитать конкретно документацию на getchar() то мы увидим: man getcharRETURN VALUE fgetc(), getc() and getchar() return the character read as an unsigned char cast to an int or EOF on end of file or error. "И EOF - это целое число, не совпадающее ни с одним возможным значение char." Угу... открываем stdlib.h и видим там строку: Код: plaintext 1.
Это очень сильно не совпадает с возможными значениями char.... Ага, ага. Ну и никто же не запрещает сделать: Код: plaintext 1.
И да, если у тебя консоль работает в CP1251, то %c ты получишь букву "я" (строчная 33-я буква кириллицы). Потому что CP1251 ее код 255, что в случае однобайтного целого так-же кодирует и -1. Вообще, когда пишешь на Си, очень полезно понимать как работает компьютер. Если для вас язык это что-то такое волшебное и мистическое - успеха не будет совсем. Для С++ это тоже будет полезным, но в меньшей степени. И чем более "высокий" язык, тем допустимая степень волшебности выше, для успешного написания программы.Ну то, что каст EOF к char дает какой-то символ совсем неудивительно. Сколько бы ни было возможных значений int, кастуя из в char, мы всегда получим один из 256 символов. А вот в обратную сторону... Сами же цитируете "return the character read as an unsigned char cast to an int" и это легко проверяется - символ возвращается как 255, а EOF -1 А что sizeof(int) >= sizeof(char) - ну равенство там скорее гипотетическое. Разве что в каком-нибудь суровом embedded с четырехбитным процессором и 128 байтами озу... Но там и со стандартной библиотекой плохо будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2020, 21:01 |
|
как все же отловить eof
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Компилируем, подсовываем через перенаправление "<" на вход файл c той самой буквой 'я' и видим, что буква=255, а EOF=-1 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2020, 21:21 |
|
|
start [/forum/topic.php?fid=57&gotonew=1&tid=2017453]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
11ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 181ms |
0 / 0 |