Как компилятор будет отличать "а" от "А" - C (СИ)
Формулировка задачи:
вот решил написать прогу обратную моей,что когда то писал
надо из 0 и 1 переводить в текст.план есть что то вроде
ну что то вроде этого,но проблема в том,как компилятор будет отличать "а" от "А" ?ведь они отличаются
while((c=getchar)!=EOF){
if(c=001)cout<<"a";
esle if(c=101)cout<<"b";
}Решение задачи: «Как компилятор будет отличать "а" от "А"»
textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
#include <limits.h>
/* Печать ascii символов и русских букв cp866 */
char *binStr(int c){
static char buf[CHAR_BIT + 1] = {0};
int i;
for ( i = 0; i < CHAR_BIT; i++ )
buf[i] = ( c & (1 << (CHAR_BIT - 1 - i)) ) ? '1' : '0';
return buf;
}
int main(){
int c;
printf("%5s %-5s %-5s %s\n", "symbol", "hex", "dec", "bin");
for ( c = 0; c <= UCHAR_MAX; c++ )
if ( isprint(c) || (c >= 128 && c <= 159) || (c >= 160 && c <= 175) || (c >= 224 && c <= 241) )
printf("%-6c %#-5x %-5d %s\n", c, c, c, binStr(c));
return 0;
}
Объяснение кода листинга программы
- Структура программы включает в себя объявление функции
main(), которая является точкой входа в программу, и функциюbinStr(int c), которая преобразует десятичное число в двоичное представление. - В функции
main()используется функцияprintf()для вывода таблицы с результатами. Таблица содержит столбцыsymbol,hex,decиbin. - В функции
main()используется циклfor, который проходит через все допустимые значения символа от 0 до 255. - Условие цикла проверяет, является ли текущий символ печатаемым символом ASCII, символом кириллицы в кодировке CP866 или символом в диапазоне от 128 до 159, от 160 до 175 или от 224 до 241.
- Если условие истинно, то текущий символ выводится в столбцы
symbol,hex,decиbin. - Функция
binStr(int c)преобразует десятичное число в двоичное представление, используя побитовый оператор AND (&) и сдвиг (<<) для получения отдельных битов числа. - Функция
binStr(int c)использует статический массивbufдля хранения двоичного представления числа. - В функции
main()используется функцияisprint()для проверки, является ли символ печатаемым символом ASCII. - В функции
main()используется функцияprintf()для форматированного вывода таблицы с результатами. - В функции
main()используется циклfor, который проходит через все допустимые значения символа от 0 до 255. - Условие цикла проверяет, является ли текущий символ печатаемым символом ASCII, символом кириллицы в кодировке CP866 или символом в диапазоне от 128 до 159, от 160 до 175 или от 224 до 241.
- Если условие истинно, то текущий символ выводится в столбцы
symbol,hex,decиbin. - Функция
binStr(int c)преобразует десятичное число в двоичное представление, используя побитовый оператор AND (&) и сдвиг (<<) для получения отдельных битов числа. - Функция
binStr(int c)использует статический массивbufдля хранения двоичного представления числа. - В функции
main()используется функцияisprint()для проверки, является ли символ печатаемым символом ASCII. - В функции
main()используется циклfor, который проходит через все допустимые значения символа от 0 до 255. - Условие цикла проверяет, является ли текущий символ печатаемым символом ASCII, символом кириллицы в кодировке CP866 или символом в диапазоне от 128 до 159, от 160 до 175 или от 224 до 241.
- Если условие истинно, то текущий символ выводится в столбцы
symbol,hex,decиbin. - Функция
binStr(int c)преобразует десятичное число в двоичное представление, используя побитовый оператор AND (&) и сдвиг (<<) для получения отдельных битов числа. - Функция
binStr(int c)использует статический массивbufдля хранения двоичного представления числа.