int и char в С
нет никаких проблем при работе с единичными символами в C, используя тип int...
...в то же время, невозможно распечатать массив символов, если он имеет тип int - печатается всего лишь первый символ, а вот если char, то всё OK.
Если быть точнее, то с помощью getchar() заполняем int массив и печатаем его при помощи printf().
Обьясните, почему так происходит? Только поподробнее, ибо не то чтобы чайник, но очень хочется разобраться.
Само собой. Код символа - 1 байт. Тип int - 4 байта (если компилятор 32-битный). Получаем обратный дамп: 80 00 00 00. Функция printf работает со строками, используя ноль - как индикатор окончания строки. Это "явление" носит название "строка ASCIIZ", т.е. строка символов ASCII с нулем (Z - zero) в конце...
...в то же время, невозможно распечатать массив символов, если он имеет тип int - печатается всего лишь первый символ, а вот если char, то всё OK.
см.выше
Если быть точнее, то с помощью getchar() заполняем int массив и печатаем его при помощи printf().
ты каким компилятором пользуешься? 1900-богом забытого года? Переходи на более-менее приемлемый.... :)
Обьясните, почему так происходит? Только поподробнее, ибо не то чтобы чайник, но очень хочется разобраться.
Именно чайник. Это не наезд и не оскорбление. :) Все ими были... Посмотри MSDN, почитай Кернигана и Страуструпа. Есть намного более удобные фунции, чем из стандартой С-библиотеки...
Можно, конечно, смеяться, но для начала по-моему сойдёт.
IMHO для написания простейших программ, типа конкатенация файлов,
выбор компилятора вопрос далеко не принципиальный, т.к. на данном этапе передо мной стоит задача подняться с уровня "чайника" немного повыше. За разьяснение спасибо, собственно, как я и полагал.
[/QUOTE]Зачем те int, getchar его возвращает, чтобы в диапазон значений попадала -1(EOF - код конеца файла).
Пользуйся wchar и соответствующими функциями wprintf(), wscanf() и т.д. Вобщем познакомся с типом wchar.)
З.Ы. Я конешно предлагаю новичкам пользоваться TC 3.1, но 2.0 наверное уж слишком)
Субъективное мнение: командная строка - основа основ, при изучении работы с компилятором, линкером и т.д., поэтому могу присоединиться к пожеланию
Ибо, после четкого изучения работы "устаревших" :) средств, изучить новейшие библиотеки и средства разработки - не составит большого труда. А графические IDE - это прекрасно, но только тогда, когда четко знаешь и понимаешь то, что делается "в фоне".
Субъективное мнение: командная строка - основа основ, при изучении работы с компилятором, линкером и т.д., поэтому могу присоединиться к пожеланию
Ибо, после четкого изучения работы "устаревших" :) средств, изучить новейшие библиотеки и средства разработки - не составит большого труда. А графические IDE - это прекрасно, но только тогда, когда четко знаешь и понимаешь то, что делается "в фоне".
Совершенно согласен. Причем не только при изучении, но и при разработке бывает, что cmd лучше. Но не надо думать, что с консолью работают исключительно бородатые компиляторы!? И самые новейшие могут эффективно ее использовать, особенно при использовании сборочных сценариев.
согласен. сам IC++ 9.0 использую. и только из cmd...