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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.