C语言中如何判断是不是合法转义字符?
'\0'是八进制的转移字符,如果看到:\087这就是非法的,'\0x'表示十六进制,还有一些必备的如:'\n','\r'这些。
和普通的字符判断相同,比如判断和'a'是否相同,ch=='a',那么判断转义一样,如ch=='\n',逻辑表达式的结果只有两个,true和false,所有的逻辑表达式都一样,为真就是true,否则就是false。
#include<stdio.h>
int main(){
char a[20]="abc\'efgh";
int i=0;
for(i=0;i<20;i++){
if(a[i]=='\\'&&a[i+1]=='\'')
printf("true,%d",i);
if(a[i]=='\'')
printf("false");
if(a[i]==0){
printf("%d",i);
break;
数据类型关键字
short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)
long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入)
long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)
signed:修饰整型数据,有符号数据类型。(C89标准新增)
unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)
restrict:用于限定和约束指针,并表明指针是访问一个数据对象的初始且唯一的方式。(C99标准新增)
复杂类型关键字
struct:结构体声明。(K&R时期引入)
union:联合体声明。(K&R时期引入)
enum:枚举声明。(C89标准新增)
typedef:声明类型别名。(K&R时期引入)
sizeof:得到特定类型或特定类型变量的大小。(K&R时期引入)
inline:内联函数用于取代宏定义,会在任何调用它的地方展开。(C99标准新增)
\a 响铃
\b 退格
\f 换页
\n 换行
\r 回车
\t 水平制表
\v 垂直制表
\\ 反斜线字符''\'
\? 问号“?”
\' 单引号(撇号)字符
\" 双引号字符
\0 空字符(NULL)
\ddd 三位八进制
\xhh 二位十六进制
总的转义符就这些啦,
所谓合法的,就是符合以上形式的转义符,除此之外的均不是,比如\ba,这就是先退格再让a覆盖在上面,而不是先退格再响铃,凡是碰到反斜杠“\”就要警惕了,看看有没有以上所述的转义,若没有基本上是错的;
还要注意的是如果输入的是\其他英文字母(不在上述之列),输出的会是ASCII码(具体参见ASCII码对照表)
下面的实例可以帮助您理解转义符:
#include <stdio.h>
int main(void)
{
printf("12345678901234567890\n"); /*参考数据*/
printf("abc\tdef\n"); /*转移符使用*/
printf("abc\tde\bf\n");
printf("abc\tde\b\rf\n");
printf("abc\"def\"ghi\?\n");
printf("整数98\n"); /*转移符数制*/
printf("八进制表达整数98是 \142\n");
printf("十六进制表达整数98是\x62\n");
return 0;
}
'\\' '\' '\f' '\101'
'\xf' '\a' '\}' 'x1f'
2.下面4个选项中,均是正确的八进制数和十六进制数的选项是: 这个我还真无法判断了
A) -10 B) 0abc C) 0010 D) 0a12
0X8f -017 -0x11 -0x123
-011 0xc 0xf1 -0xa
3.下面4个选项中,均是非法常量的选项是: 为什么是选 A, '\0xa'应该是合法的吧
A) 'as' B) '\\' C) -0x18 D) 0xabc
-0fff '\01' 01177 '\0'
'\0xa' 12,456 0xf "a"