Если строка длиной в один символ, вы можете просто проиндексировать ее:
char *s = "\n";
int ascii = s[0];
Однако, если вы находитесь в системе, где используемый набор символов не является ASCII, вышеприведенное не даст вам значение ASCII. Если вам нужно убедиться, что ваш код работает на таких редких машинах, вы можете создать себе таблицу ASCII и использовать ее.
Если, с другой стороны, у вас есть два символа, т.е.
char *s = "\\n";
тогда вы можете сделать что-то вроде этого:
char c;
c = s[0];
if (c == '\\') {
c = s[1]; /* assume s is long enough */
switch (c) {
case 'n': return '\n'; break;
case 't': return '\t'; break;
...
default: return c;
}
}
Выше предполагается, что ваш текущий компилятор знает, что означает '\n'
. Если это не так, то вы все равно можете это сделать. Чтобы узнать, как это сделать, и увлекательную историю см. Размышления о доверии к доверию Кена Томпсона.