Перевести строку символов из hex в ascii
На вход подаётся строка в hecx в виде непрерывной строки либо парами через пробел. Ввод должен закончиться кнопкой энтер
57 58 59 56
57585956
На выходе я должен получить
WXY
Символ V должен отсечься
Вот мой код:
// Online C compiler to run C
#include <stdio.h>
int main() {
// Write C code here
printf("+++++++++++++");
int i, j=1;
char err;
while (j<4) {
scanf("%X",&i);
if (i<256){
printf("---------\n");
printf( "%c \n",i);
printf("-------end%d\n", j) ;
j++;
}
if(err == '\n') {
break;
}
}
while(j>1){
printf("%c", i);
j--;
}
return 0;}
Сейчас пока рассматриваю ситуацию когда ввод идёт с пробелами, т.е. идеальный случай. По моей логике программа должна вывести первые три символа так как у меня три итерации цикла. На каждой итерации один символ! Но! Программа ввод запрашивает бесконечно она даже не выходит из первой итерации!
У меня есть работающий код, но он не мой.в какой-то степени я упростил чужой код до состояния написанного, что бы самому дойти до осознания как он работает постепенно его усложняя.
Сейчас в написанном есть пару лишних конструкций в сравнении с чужим кодом.
Прошу помочь разобраться. Если будут другие команды в коде прошу объяснить ибо на данный момент я знаю только то что написано!!
Upd 1 Теперь суть в том чтобы на сплошной последовательности программа завершала работу без вывода чего либо! + Цикл не должен ограничиваться тремя выводимыми символами
ниже мой код
while (1) {
scanf("%2X",&i);
printf("%c \n",i);
if (getchar()!=' '){
printf("-------end%d\n", j);
break;
}
}
При вводе 5758
программа выдает от W что меня не устраивает
Ответы (1 шт):
У Вас в цикле увеличивается i, а надо увеличивать j
while (j<4)
{
scanf("%X",&i);
if (i<256){
printf("---------\n");
printf( "%c \n",i);
printf("-------end%d\n", j) ;
j++; // вот здесь нужно увеличивать j
}
}
Если будете подавать на вход одной строкой 57585956, то scanf() воспримет это как 1 число.
В цикле проверяется введенное значение только if(i<256){. А если будет введен 0? Или 1? и т.д. Нужно проверять на код букв, или хотя бы печатных символов алфавита.
while (j<4)
{
scanf("%X",&i);
if( i>65 && i<256 )
{