LINUX.ORG.RU

Дебаг очень маленькой программы (C)


0

0
// Prints chars and their decimal and hex machine codes

#include <stdio.h>

int main() {
int symbol = 0;
int i;
for (i = 0; i < 256; ++i) {
printf ("char = %c\tdec= %i\thex=%x\n", symbol, symbol, symbol);
symbol++;
}
return 0;
}


Эта програмулька печатает коды символов, но после ее запуска либо в приглашении шелла остаются несколько непонятно откуда взявшихся символов, либо происходит поломка отображения не-ascii символов ( как в терминале так и и консоли)

в чем некорректность программы?

Вы не очень хорошие символы отправляете на терминал. От этого ему и плохо. Не делайте так, чем Вас терминал обидел?
anonymous
()
да, и попробуйте выводить не все символы, а какой-нибудь промежуток поменьше (65-95, к примеру). Я думаю, вам нафиг не впилось выводить именно все 256 символов.
anonymous
()
У меня всё корректно.
Дистр - Мандрива 2006, гцц 4.0.1, Консоле 1.5.2.
ЗЫ Цикл можно сразу по symbol делать.
anonymous
()
в том, что первые 32 символа таблицы ascii заняты управляющими символами, такими как перевод строки, удаление символа, табуляция и проч.

соответственно их вывод и ломает весь результат.

правильнее начинать цикл с 32

generatorglukoff ★★
()
printf("char = %c\tdec= %i\thex=%x\n", isprint(symbol) ? (char)symbol : '.', symbol, symbol);
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.