精华内容
下载资源
问答
  • C语言】字符串中的转义字符与字符串的长度

    万次阅读 多人点赞 2011-10-26 10:04:28
    提示: (1)计算字符串长度时关键是要注意辨认转义字符;...x=/”,strlen求其长度为 7,但是因为字符串在末尾还有一个终止符‘\0’,因此字符串8个字节,长度为8. 2、带转义字符的字符串  
    
    

    提示:

    (1)计算字符串长度时关键是要注意辨认转义字符;

    (2)一个转义字符总是以反斜杠开始,再加一个其他字符组成。所以,遇到反斜杠时要特别注意!!!

    示例:

    1、不带转义字符的字符串

      如:“abc!x=/”,strlen求其长度为 7,但是因为字符串在末尾还有一个终止符‘\0’,因此字符串占8个字节,长度为8.

    2、带转义字符的字符串

      (1) 字符串“abc\n”:其中的'\n'为转义字符(换行符),计算字符串长度时只能计作一个字符,所以该字符串的长度为5(而不是6)

      (2) 字符串“abc\n\\\'\"":其中有4个转义字符:'\n'(换行符)、'\\'(反斜杠)、'\''(单引号)、'\"'(双引号),所以该字符串的长度为8(而不是12)。

      (3) 字符串“abc\0xyz”:其中有一个转义字符'\0',它是字符串结束符,所以,当用函数strlen来测试该字符串的长度时,结果应该为4(而不是8)。

      (4) 字符串“abc\\0xy”:其中有一个转义字符'\\'(反斜杠),这样,后面的字符串“0xy”照样计算,所以,该字符串的长度为7(而不是将第二个反斜杠与其后的0结合为一个转义字符'\0',若那样的话,第一个反斜杠将无法处理,因为一个转义字符总是由反斜杠加其他字符组成的,单独的一个反斜杠不能作为任何合法的字符)。

      (5) 若将字符串“abc\\0xy”改为“abc\\\0xy”:则其中有二个转义字符'\\'(反斜杠)和'\0'(字符串结束符),这时,当用函数strlen来测试该字符串的长度时,结果应该为5(而不是8)。

      (6) 若将字符串“abc\\\0xy”改为“abc\\\061xy”:则其中有二个转义字符'\\'(反斜杠)和'\061'(ASCII码值等于061的字符,也即数字字符'1'),这时,当用函数strlen来测试该字符串的长度时,结果应该为7(而不是4或9)。所以,当遇到转义字符'\0'时,还要看其后面是否还有数字,若有,则应将后面的数字(一至二位)与前面的'\0'相结合作为一个字符计入整个字符串的长度。

        若用printf(“abc\\\061xy”);输出,则输出结果为:abc\1xy

    注意使用strlen求字符串长度是是不计算末尾的终止符的,但是字符串所占的字节数是包括终止符。

    例题一:[1995年二级C笔试选择题(26)]

    请选出以下语句的输出结果(  )

    printf("%d\n",strlen("\t\"\065\xff\n"));

    (A) 5  (B) 14  (C) 8  (D) 输出项不合法,无正常输出

    正确答案是(A):字符串中包含的5个字符是:'\t'(跳格符)、'\"'(双引号)、'\065'(ASCII值为八进制065,也即十进制为51的字符)、'\xff'(ASCII值为十六进制ff,也即十进制为255的字符)、'\n'(换行符)。

    例题二:[1998年二级C笔试选择题(44)]

    若有以下程序段:

    char str[]="ab\n\012\\\"";

    printf("%d",strlen(str));

    上面程序段的输出结果是

    A) 3 B) 4 C) 6  D) 12

    正确答案是(C):字符串中包含的6个字符是:'a'、'b'、'\n'、'\012'、'\\'和'\"'。如果这一问题是问字符串的长度,则为7。

    【转自http://hi.baidu.com/xiaobao_code/blog/item/ec9988c0dcc93edc38db4942.html 】

    展开全文
  • 1、格式字符 格式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。 格式说明总是由“%”字符开始的。 释义 格式字符 表示 pointer %p 以16进制形式输出...

    1、格式字符

     

    格式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。

    格式说明总是由“%”字符开始的。

    释义 格式字符 表示
    pointer %p 以16进制形式输出内存地址

    decimalism 十进制

    %d 

    按十进制整型数据的实际长度输出
    long decimalism %ld 长整型输出
    octonary %o 八进制输出
    hexadecimal %x 以十六进制输出整数,重要!
    unsigned decimalism %u 输出无符号整型,
    char %c 输出一个字符
    string %s 输出一个字符串
    float %f 输出实数,默认保留小数点后6位
      %mf 输出实数,保留小数点后m位
    exponent %e 指数形式输出
      %g 根据大小自动选f或e格式,且不输出无意义的零

    注意:

    1)一定要掌握 %x(或 %X 或 %#x 或 %#X),因为调试的时候经常要将内存中的二进制代码全部输出,然后用十六进制显示出来。下面写一个程序看看它们四个有什么区别:

    # include <stdio.h>
    int main(void)
    {
        int i = 47;
        printf("%x\n", i);   
        printf("%X\n", i);   
        printf("%#x\n", i);   
        printf("%#X\n", i);   
        return 0;
    }
    /*
    在 VC++ 6.0 中的输出结果:
    2f
    2F
    0x2f
    0X2F
    */
    

    从输出结果可以看出:如果是小写的x,输出的字母就是小写的;如果是大写的X,输出的字母就是大写的;如果加一个#,就以标准的十六进制形式输出。

    最好是加一个#,否则如果输出的十六进制数正好没有字母的话会误认为是一个十进制数呢!

    总之,不加#容易造成误解。但是如果输出 0x2f 或 0x2F,那么人家一看就知道是十六进制。而且%#x%#X中,笔者觉得大写的比较好,因为大写是绝对标准的十六进制写法。

    释义 16进制 说明
    小写 %x 输出的字母就是小写的
    大写 %X 输出的字母就是大写的
    #小写 %#x 以标准的十六进制形式输出
    #大写 %#X  

    2)使用%u输出无符号整型(unsigned),输出无符号整型时也可以用 %d,这时是将无符号转换成有符号数,然后输出。但编程的时候最好不要这么写,因为这样要进行一次转换,使 CPU 多做一次无用功。

    2、转义字符

    转义字符

    意义

    ASCII码值(十进制)

    \a

    响铃(BEL)

    007

    \b

    退格(BS) ,将当前位置移到前一列

    008

    \f

    换页(FF),将当前位置移到下页开头

    012

    \n

    换行(LF) ,将当前位置移到下一行开头

    010

    \r

    回车(CR) ,将当前位置移到本行开头

    013

    \t

    水平制表(HT) (跳到下一个TAB位置)

    009

    \v

    垂直制表(VT)

    011

    \\

    代表一个反斜线字符''\'

    092

    \'

    代表一个单引号(撇号)字符

    039

    \"

    代表一个双引号字符

    034

    \? 代表一个问号 063

    \0

    空字符(NUL)

    000

    \ooo

    1到3位八进制数所代表的任意字符

    三位八进制

    \xhh

    十六进制所代表的任意字符

    十六进制

     

    3、不同类型的指针,都是占4个字节

    首先,一个变量的地址存放的是该变量第一个字节的编号,比如 整型变量 i 占 4 个字节,但是 i 的地址存放的是整型变量 i 的第一个字节的编号(也就是地址)。那么通过第一个字节的编号怎么找到变量 i 呢,即整型变量占 4 个字节,从第一个字节的位置往下数 8 个字节就是整型变量 i 所在的位置了。

    其次,为什么地址变量都占 4 个字节呢?因为内存有 4 G 个编号,为了方便存放编号太大的字节,所以,地址变量的空间就用 4 个字节来表示了。

    展开全文
  • 2.5.1字符常量字符常量是指用一对单引号括起来的一个字符。...在CC语言中,字符是按其所对应的ASCII码值来存储的,一个字符占一个字节。例如:字符ASCII码值(十进制)!33048149957A65B66a97b98注意字符'9'和数字9的区...

    2.5.1字符常量

    字符常量是指用一对单引号括起来的一个字符。如‘a’,‘9’,‘!’。字符常量中的单引号只起定界作用并不表示字符本身。单引号中的字符不能是单引号(’)和反斜杠(\),它们特有的表示法在转义字符中介绍。

    在CC语言中,字符是按其所对应的ASCII码值来存储的,一个字符占一个字节。例如:字符ASCII码值(十进制)!33048149957A65B66a97b98

    注意字符'9'和数字9的区别,前者是字符常量,后者是整型常量,它们的含义和在计

    算机中的存储方式都截然不同。

    由于C语言中字符常量是按整数(short型)存储的,所以字符常量可以像整数一样在程序中参与相关的运算。例如:

    'a'-32;/*执行结果97-32=65*/

    'A' 32;/*执行结果65 32=97*/

    '9'-9;/*执行结果57-9=48*/

    2.5.2字符串常量

    字符串常量是指用一对双引号括起来的一串字符。双引号只起定界作用,双引号括起的字符串中不能是双引号(")和反斜杠(\),它们特有的表示法在转义字符中介绍。例如:

    "China","Cprogram","YES&NO","33312-2341","A"

    等。C语言中,字符串常量在内存中存储时,系统自动在字符串的末尾加一个“串结束标志”,即ASCII码值为0的字符NULL,常用\0表示。因此在程序中,长度为n个字符的字符串常量,在内存中占有n 1个字节的存储空间。例如,字符串China有5个字符,作为字符串常量"China"存储于内存中时,共占6个字节,系统自动在后面加上NULL字符,其存储形式为:

    20087855931691.gif

    要特别注意字符串与字符串常量的区别,除了表示形式不同外,其存储性质也不相同,字符'A'只占1个字节,而字符串常量"A"占2个字节。

    2.5.3转义字符

    转义字符是C语言中表示字符的一种特殊形式。通常使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符,如用于表示字符常量的单撇号('),用于表示字符串常量的双撇号(")和反斜杠(\)等。转义字符用反斜杠\后面跟一个字符或一个八进制或十六进制数表示。表2-4给出了C语言中常用的转义字符。

    20087855931153.gif

    字符常量中使用单引号和反斜杠以及字符常量中使用双引号和反斜杠时,都必须使用转义字符表示,即在这些字符前加上反斜杠。

    在C程序中使用转义字符\ddd或者\xhh可以方便灵活地表示任意字符。\ddd为斜杠后面跟三位八进制数,该三位八进制数的值即为对应的八进制ASCII码值。\x后面跟两位十六进制数,该两位十六进制数为对应字符的十六进制ASCII码值。

    使用转义字符时需要注意以下问题:

    :1)转义字符中只能使用小写字母,每个转义字符只能看作一个字符。

    。2)\v垂直制表和\f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。3)在C程序中,使用不可打印字符时,通常用转义字符表示。

    2.5.4符号常量

    C语言允许将程序中的常量定义为一个标识符,称为符号常量。符号常量一般使用大写英文字母表示,以区别于一般用小写字母表示的变量。符号常量在使用前必须先定义,定义的形式是:

    #define

    例如:

    #definePI3.1415926

    6#defineTRUE1

    1#definrFALSE0

    0#defineSTAR'*'

    这里定义PI、TRUE、FLASE、STAR为符号常量,其值分别为3.1415926,1,0,'*'。

    #define是C语言的预处理命令,它表示经定义的符号常量在程序运行前将由其对应的常量替换。

    定义符号常量的目的是为了提高程序的可读性,便于程序的调试和修改。因此在定义符号常量名时,应使其尽可能地表达它所代表的常量的含义,例如前面所定义的符号常量名PI(π),表示圆周率3.1415926。此外,若要对一个程序中多次使用的符号常量的值进行修改,只须对预处理命令中定义的常量值进行修改即可。

    2.5.5字符变量

    字符变量用来存放字符常量,注意只能存放一个字符,不要以为在一个字符变量中可以放字符串。字符变量的定义形式如下:

    charc1,c2;

    ;

    它表示c1和c2为字符变量,各放一个字符。因此可以用下面语句对c1、c2赋值:

    c1='a';c2='b';

    20087855931852.gif

    c1、c2被指定为字符变量。但在第3行中,将整数97和98分别赋给c1和c2,它的作用相当于以下两个赋值语句:

    c1='a';c2='b';

    因为'a'和'b'的ASCII码为97和98。第4行将输出两个字符。"%c"是输出字符的格式。程序输出:

    20087855932504.gif

    它的作用是将两个小写字母转换为大写字母。因为'a'的ASCII码为97,而'A'为65,'b'为98,'B'为66。从ASCII代码表中可以看到每一个小写字母比大写字母的ASCII码大32。即'a'='A' 32。

    展开全文
  • C语言字符串常量

    2021-05-05 20:05:38
    1、字符串是在双引号内的字符序列,其中可以包括转义字符。如,“C language\n”. 2、字符串常量中的字符依次存储在内存中一块连续的区域内,并把空字符“\0”(ASCII码值为0)自动附加到字符串尾部作为字符串结束...

    1、字符串是在双引号内的字符序列,其中可以包括转义字符。如,“C language\n”.

    2、字符串常量中的字符依次存储在内存中一块连续的区域内,并把空字符“\0”(ASCII码值为0)自动附加到字符串尾部作为字符串结束标志。所以,对于字符个数为n的字符串所占的内存空间为n+1个字节。

    3、区别字符串与字符:“a”----字符串,所占空间为2个字节;‘a’-----字符,所占空间为1个字节。

    4、例题,字符串“\\\\1234\\\\\n”在内存中所占的字节数是?

                  解析:“\\”为转义字符“\”,即反斜杠。故“\\\\”占2个字节,两个“\\\\”占4个字节;“1234”占4个字节;“\n”占一个字节;字符串最后会有一个空字符作为结束标志,“\0”,即空字符占一个 字节。合计10个字节。

     

    展开全文
  • JDK:java语言的软件开发工具包 JRE:java语言的运行环境 每个字节占八位(最高位代表符号位,所以1字节取值范围是+127~-127,0代表正数,1代表负数) ...字符型 (char:2字节C语言1...
  • 我们的字符有:数字字符、英文字符、转义字符、特殊字符和中文字符。 除了中文字符以外,其他字符都是一个字节,中文字符看下面分析。 中文字符:在Linux系统中,中文字符的输出格式是UTF-83个字节;在Windows系统...
  • c语言中 为什么 /x3d几个字节

    千次阅读 2008-10-20 09:15:00
    3d其实就是0011 1101|||8个吧 就是8个bit 每两个符号组合在一起 也就是4个bit 每个符号表示0-15 这是一个十六进制表示法 一个字节 这个是C中的转义字符表示法 他是按一个字母俩个字节算的|||一个字节 也就是一个字节...
  • 那么在C语言中这些数据类型分别多少个字节呢 四、 变量、常量,标识符 变量和常量 定义和声明 声明和定义最重要的区别 变量分为 常量分为 单引号和双引号 记住一些常见的ASCII码值 注意转义字符 \ ...
  • C语言基础简述

    2021-04-03 15:42:09
    3.注释+转义字符+字符串 4.C语言程序格式 5.程序实验 ————————————————————————— *1.数据类型 数据类型 内存大小(字节) 整型 int 4 短整型 short 2 长整型 long 4 长长...
  • C语言拾遗①

    2021-04-14 20:58:46
    #转义字符 #数据类型 数据分为七种类型,有int , char , float , double , long , long long , short 这七种类型,他们分别字节长度是 类型 int char float double long long long short 长度 4 1 4 8 ...
  • c语言学习笔记--初识c

    2016-03-06 20:18:12
    1.基本数据类型--字符类型之转义字符 字符类型保存的是ASCII码表中的字符。一个字节。ASCII 码中的字符包括标准...c语言提供了一种表示控制字符的方法,即转义字符转义字符是以反斜杠“\”引导的特殊字符常量表示
  • C语言学习DAY1 杂记

    2019-01-24 19:38:41
    整数,在目前绝大多数机器上4个字节。TC环境中是2个字节 单精度实型float 单精度浮点数,一般是4个字节长 双精度实型double 双精度浮点数,一般是8个字节字符型char 字符,一般是1个字节长 用来表示256个ASCII...
  • c语言你知识点总结

    2018-05-15 00:42:54
    '1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。字符结束标志为’\0’  '0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。 一般考试表示单个字符错误的形式:'65' "1"  ...
  • 在 C 语言中,转义字符 ‘\n’ 一个字节空间。 字符的最后有一个结束标志(’\0’) 宏定义实现:使用符号常量 NL,代替转义字符 ‘\n’ #include <stdio.h> #define NL '\n' int main() { printf("Line1...
  • C语言学习之基础语法

    2019-09-03 23:12:33
    一、数据类型 1、整型 十进制整型常量:0~9,如-56 ...字符常量:用单引号括起来的单个可视字符或转义字符,在内存中一个字节的存储空间,存放的是其ASCII码值,如'a','S',a的ASCII码值为97,字符‘A’的ASCII...
  • c语言学习笔记一

    2012-11-21 13:10:37
    :整型 整数-2(15)~2(15)-1 -32768~32767八进制:0开头十六进制:0x开头十进制:占用2个字节,16个二进制位浮点型(单精度/双精度)浮点小数(双精度)1.232.1E2 2.1(12)字符型单个字符: 'a' 一个字节转义字符:‘\n...
  • 3、‘\0’ 用单引号括起来是字符类型,前面有\,即使转义字符,ASCII 码值为0,占一个字节 所以:0与‘\0’虽所占字节数不同,但数值上是相等的,所以在初始化字符数组的时候,会用0来初始化。 例如: char ch[6...
  • 占字节和取值范围均与基本型相同。 3.长整型 类型说明符为long int或long ,在内存中占4个字节,其取值为长整常数。 4.无符号型 类型说明符为unsigned。 无符号型又可与上述三种类型匹配而构成: (1)无符号基本型 ...
  • * ppt课件 例 转义字符的使用 main( ) {printf( ab c\t de\rf\tg\n; printf(h\ti\bjk; } 运行结果 abcde f abcgde h jik * ppt课件 二字符变量 一个字符变量只能存放一个字符常量 char c1,c2; c1=a;c2=b; 在内存中...
  • 常量 C语言有丰富的数据类型,在开发中,一般用常量或者变量来表示这些数据 "量"表示数据。常量,则表示一些固定的数据,也就是不能改变的数据。 ... // 错误写法, 因为一个汉字3...//字符型常量(转义字符,表...
  • 转义字符:%d(十进制)、%o(八进制)、%x(十六进制)。 int a = 10; /* 缺省的int定义声明为十进制 */ printf("%d %o %x",a,a,a); /* 输出不同进制的结果 */ 二、printf可以控制输出占位宽、左右对齐 ...
  • 2.3 不合法的常量有:0892...” 长度:9字节 内存 10字节注:\n换行符 不长度 、\\ 转义字符 只取 \、\064 表示64位 取ASCll码54 相当于4,\? 只取? 2.5 M ;772.6 -26;62.7 ①char a1; int a2; ②int a,b; f...
  • 1、整型常量可以带正负号,也可以不带。实型数都有符号 2、二进制:B 八进制:O 十进制:D 十六进制:H 3、float型:单精度浮点型,内存中四个字节,有效...6、转义字符:“\t”-制表,“\n”-回车换行,“\b”...
  • C语言程序设计试题库 题号知识点所在章节答案题目 填空题 1符号语言 高级...个字节转义字符\n的功能是_ 3整型 1运算符%两侧运算量的数据类型必须都是_若有定义语句int x=3y=2float a=2.5b=3.5则表达式(x+y%2+(int)a/
  • python语言第三天笔记

    2020-11-09 21:11:11
    文章目录1 字符编码2 转义字符3 字符串拼接4 字符串切片5 字符串的求长、替换、分隔6 输入输出(1) 输入函数 input(2) 输出函数 print7 format格式输出字符串其他函数 1 字符编码   python语言的字符默认使用...
  • PAT1002总结

    2019-08-15 11:27:10
    2.转义字符’\0’是C语言中的字符串结束标志; 3.tips:字符9-字符0=整型9(字符以ascii代码存储的,一般一个字节,ascii代码属于整数形式,所以字符类型属于整型类型) #include <stdio.h> #include <...
  • 第一类:逻辑型boolean 只允许取值true或false,...Java字符采用Unicode编码,每个字符占两个字节,因而可用16进制编码形式表示如:char c1 = 'u0061';Java语言还允许使用转义字符''来将其后的字符转换变为其它含义...
  • 第一类:逻辑型boolean ...Java字符采用Unicode编码,每个字符占两个字节,因而可用16进制编码形式表示 如:char c1 = 'u0061'; Java语言还允许使用转义字符''来将其后的字符转换变为其它含义 如:char c1 = '...

空空如也

空空如也

1 2
收藏数 37
精华内容 14
关键字:

c语言转义字符占字节

c语言 订阅