2011-05-12 67 views
7

考虑下面的字符*如木炭:创建一个从字符*包括转义字符

char* s = "\n"; 

这怎么可能转化成表示新行字符,像这样一个单个字符:

char c = '\n'; 

除了处理换行符之外,我还需要能够将任何带有转义字符的字符转换为字符。这怎么可能?

+6

'char c = * s;'工作。字符串中的''\ n''只有两个字符的形式:编译后它是一个字符;对于所有其他转义字符也是如此。编译后的字符串'“fo \ 111 \ tar”有7个字符(源代码中可见6个,空终止符)。 – pmg 2011-05-12 18:56:33

+2

@pmg - 这不是一个评论发布的答案! – JonH 2011-05-12 18:58:20

+0

@pmg:JonH是对的。发帖 – Heisenbug 2011-05-12 18:59:23

回答

9

char c = *s;作品。

'\n'里面的字符串只有两个字符的源代码形式:编译后它是单个字符;对于所有其他转义字符也是如此。

字符串"fo\111\tar",编译后,具有7个字符(在源代码(6可见'f''o''\111''\t''a',和'r')和空的终止子)。

+0

+1 - 告诉过你:-p – JonH 2011-05-12 19:03:00

+0

是的,没错。谢谢@JonH :) – pmg 2011-05-12 19:15:15

+0

非常棒,谢谢@pmg。 – AgileVortex 2011-05-12 20:07:46

1

你的意思是这样的吗?

char * s = "\n"; 
char c = *s; 
3

取消对它的引用:

char* s = "\n"; 
char c = *s; 
2

正如其他人所说,换行实际上只有一个字符在记忆中。要从字符串指针中获取单个字符,可以像访问数组一样访问指针(当然,假设为指向的字符串分配了内存):

char* s = "\n"; 
char c = s[0];