Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

int и char в С

1.8K
23 декабря 2006 года
igor_nf
256 / / 13.12.2006
Обьясните, пожалуйста, следующее:
нет никаких проблем при работе с единичными символами в C, используя тип int...
...в то же время, невозможно распечатать массив символов, если он имеет тип int - печатается всего лишь первый символ, а вот если char, то всё OK.

Если быть точнее, то с помощью getchar() заполняем int массив и печатаем его при помощи printf().

Обьясните, почему так происходит? Только поподробнее, ибо не то чтобы чайник, но очень хочется разобраться.
9
23 декабря 2006 года
Lerkin
3.0K / / 25.03.2003
Цитата: igor_nf
...нет никаких проблем при работе с единичными символами в C, используя тип int...



Само собой. Код символа - 1 байт. Тип int - 4 байта (если компилятор 32-битный). Получаем обратный дамп: 80 00 00 00. Функция printf работает со строками, используя ноль - как индикатор окончания строки. Это "явление" носит название "строка ASCIIZ", т.е. строка символов ASCII с нулем (Z - zero) в конце...

Цитата: igor_nf

...в то же время, невозможно распечатать массив символов, если он имеет тип int - печатается всего лишь первый символ, а вот если char, то всё OK.



см.выше

Цитата: igor_nf

Если быть точнее, то с помощью getchar() заполняем int массив и печатаем его при помощи printf().



ты каким компилятором пользуешься? 1900-богом забытого года? Переходи на более-менее приемлемый.... :)

Цитата: igor_nf

Обьясните, почему так происходит? Только поподробнее, ибо не то чтобы чайник, но очень хочется разобраться.



Именно чайник. Это не наезд и не оскорбление. :) Все ими были... Посмотри MSDN, почитай Кернигана и Страуструпа. Есть намного более удобные фунции, чем из стандартой С-библиотеки...

1.8K
24 декабря 2006 года
igor_nf
256 / / 13.12.2006
Собственно по Кернигану я и занимаюсь. Компилятор Turbo C++ 2.0.
Можно, конечно, смеяться, но для начала по-моему сойдёт.
IMHO для написания простейших программ, типа конкатенация файлов,
выбор компилятора вопрос далеко не принципиальный, т.к. на данном этапе передо мной стоит задача подняться с уровня "чайника" немного повыше. За разьяснение спасибо, собственно, как я и полагал.
7.5K
26 декабря 2006 года
sadman
45 / / 21.01.2006
По мне так в самом начале своего программерского пути стоит обратить внимание на выбираемый компилятор! Дело в том что если ты будешь писать под каким-нибудь стареньким компилятором, там могут работать некоторые вещи, которые в нормальном, современном компиляторе не позволяются. Потом будешь мучаться, т.к. в старом компилере всё работало, а в этом новом,"неправильном", не работает ;)
1.9K
31 декабря 2006 года
[*]Frosty
278 / / 17.06.2006
[QUOTE=igor_nf]Если быть точнее, то с помощью getchar() заполняем int массив и печатаем его при помощи printf().
[/QUOTE]Зачем те int, getchar его возвращает, чтобы в диапазон значений попадала -1(EOF - код конеца файла).
Пользуйся wchar и соответствующими функциями wprintf(), wscanf() и т.д. Вобщем познакомся с типом wchar.)

З.Ы. Я конешно предлагаю новичкам пользоваться TC 3.1, но 2.0 наверное уж слишком)
9
31 декабря 2006 года
Lerkin
3.0K / / 25.03.2003
Одно из упущений начинающего программиста - недооценка работы из командной строки (хочется надеятся, что это по незнанию).
Субъективное мнение: командная строка - основа основ, при изучении работы с компилятором, линкером и т.д., поэтому могу присоединиться к пожеланию
  • Frosty
  • об использовании (для начинающих и изучающих) простейших сред и средств(но действительно, TC 2.0 - это ни в какие ворота, простите).
    Ибо, после четкого изучения работы "устаревших" :) средств, изучить новейшие библиотеки и средства разработки - не составит большого труда. А графические IDE - это прекрасно, но только тогда, когда четко знаешь и понимаешь то, что делается "в фоне".
    63
    31 декабря 2006 года
    Zorkus
    2.6K / / 04.11.2006
    Цитата: Lerkin
    Одно из упущений начинающего программиста - недооценка работы из командной строки (хочется надеятся, что это по незнанию).
    Субъективное мнение: командная строка - основа основ, при изучении работы с компилятором, линкером и т.д., поэтому могу присоединиться к пожеланию
  • Frosty
  • об использовании (для начинающих и изучающих) простейших сред и средств(но действительно, TC 2.0 - это ни в какие ворота, простите).
    Ибо, после четкого изучения работы "устаревших" :) средств, изучить новейшие библиотеки и средства разработки - не составит большого труда. А графические IDE - это прекрасно, но только тогда, когда четко знаешь и понимаешь то, что делается "в фоне".


    Совершенно согласен. Причем не только при изучении, но и при разработке бывает, что cmd лучше. Но не надо думать, что с консолью работают исключительно бородатые компиляторы!? И самые новейшие могут эффективно ее использовать, особенно при использовании сборочных сценариев.

    9
    31 декабря 2006 года
    Lerkin
    3.0K / / 25.03.2003
    Цитата: Zorkus
    ...И самые новейшие могут эффективно ее использовать, особенно при использовании сборочных сценариев.



    согласен. сам IC++ 9.0 использую. и только из cmd...

    1.8K
    09 января 2007 года
    igor_nf
    256 / / 13.12.2006
    Всем спасибо, перехожу на gcc-4.1.1.
    Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
    Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог