Чарр смещается в C - PullRequest
0 голосов
/ 18 апреля 2009

Я пытаюсь найти функцию в библиотеке, которая сдвигает символы вперед и назад, как я хочу например:

если эта функция использует «a» и число для сдвига вперед 3, она будет смещена 3 раза, а на выходе будет «d».

если эта функция потребляет «5» и число для сдвига вперед 3, оно будет смещено 3 раза, а выходной сигнал будет «8».

как мне этого добиться?

Ответы [ 3 ]

7 голосов
/ 18 апреля 2009

Вам не нужно вызывать функцию, чтобы сделать это. Просто добавьте номер к персонажу напрямую.

Например:

'a' + 3

оценивается как

'd'
3 голосов
/ 18 апреля 2009

Учитывая, что вы просили, это делает это:

char char_shift(char c, int n) {
   return (char)(c + n);
}

Если вы имели в виду что-то еще (возможно, намереваясь, что 'Z' + 1 = 'A'), то перепишите свой вопрос ...

2 голосов
/ 18 апреля 2009

В C char - это целочисленный тип (например, int и long long int).

Он действует так же, как и другие целочисленные типы, за исключением того, что диапазон значений, которые он может хранить, обычно ограничен от -128 до 127 или от 0 до 255, хотя это зависит от реализации.

Например:

char x = 3;
char y = 6;
int z;

z = x + y;
printf("z = %d\n", z); //prints z = 9

Тип char (обычно как часть массива) чаще всего используется для хранения текста, где каждый символ кодируется как число.

Символьные и строковые константы удобны. Если предположить, что машина использует набор символов ASCII (который сегодня почти повсеместен), в этом случае заглавная буква A кодируется как 65, тогда:

char x = 'A';
char str[] = "AAA";

эквивалентно

char x = 65;
char str[] = {65, 65, 65, 0};

Следовательно, что-то вроде 'X' + 6 имеет смысл - какой будет результат, зависит от кодировки символов. В ASCII это эквивалентно 88 + 6, что составляет 94, что составляет '^'.

...