精华内容
下载资源
问答
  • C语言中格式字符

    2020-09-14 15:07:27
    C语言中格式字符串的一般形式为:%[标志][输出最小宽度][.精度][长度]类型, 其中方括号[]中的项为可选项。 一、类型 我们用一定的字符用以表示输出数据的类型,其格式符和意义下表所示: ...c 输出单个字符 d ...

    C语言中格式字符串的一般形式为: %[标志][输出最小宽度][.精度][长度]类型, 其中方括号[]中的项为可选项。

    一、类型

    我们用一定的字符用以表示输出数据的类型,其格式符和意义下表所示:

    字符                                    意义

    a                 浮点数、十六进制数字和p-计数法(C99)

    A                 浮点数、十六进制数字和p-计数法(C99)

    c                 输出单个字符

    d                 以十进制形式输出带符号整数(正数不输出符号)

    e                 以指数形式输出单、双精度实数

    E                 以指数形式输出单、双精度实数

    f                  以小数形式输出单、双精度实数

    g                 以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大 于等于精度时使用

    G                以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大于等于精度时使用

    i                  有符号十进制整数(与%d相同)

    o                 以八进制形式输出无符号整数(不输出前缀O)

    p                 指针

    s                  输出字符串

    x                  以十六进制形式输出无符号整数(不输出前缀OX)

    X                  以十六进制形式输出无符号整数(不输出前缀OX)

    u                  以十进制形式输出无符号整数

     

    二、标志

    标志字符为-、+、#、空格和0五种,其意义下表所示:

    字符                               意 义

    -                      结果左对齐,右边填空格

    +                      输出符号(正号或负号)

    空格                 输出值为正时冠以空格,为负时冠以负号

    #                      对c,s,d,u类无影响;对o类,在输出时加前缀0;对x类,在输出时加前缀0x或者0X;对g,G 类防止尾随0被删除;

                            对于所有的浮点形式,#保证了即使不跟任何数字,也打印一个小数点字符

    0                      对于所有的数字格式,用前导0填充字段宽度,若出现-标志或者指定了精度(对于整数),忽略

    三、输出最小宽度

    用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。

    /* 测试标志字符为-、+、#、空格四种 */

    #include "stdio.h"

    #include "conio.h"

    main()

    {

    /* 以十进制形式输出带符号整数(正数不输出符号) */

    printf("*%-10d*\n", 223);

    printf("*%+10d*\n" , -232);

    printf("*%2d*\n" , 223);

    printf("*%#d*\n" , -232);

    printf("\n");

    getch();

    /* 以八进制形式输出无符号整数(不输出前缀O) */

    printf("*%-10o*\n" , 223);

    printf("*%+10o*\n" , -232);

    printf("*%o*\n" , 223);

    printf("*%#o*\n" , -232);

    printf("\n");

    getch();

    /* 以十六进制形式输出无符号整数(不输出前缀OX) */

    printf("$%-10x$\n" , 223);

    printf("$%010x$\n" , -232);

    printf("$% x$\n" , 223);

    printf("$%#x$\n" , -232);

    printf("\n");

    /* 以十进制形式输出无符号整数 */

    printf("%-10u\n" , 223);

    printf("%+10u\n" , -232);

    printf("% u\n" , 223);

    printf("%#u\n" , -232);

    printf("\n");

    getch();

    /* 以小数形式输出单、双精度实数 */

    printf("%-10f\n" , 223.11);

    printf("%+10f\n" , 232.11111111);

    printf("% f\n" , -223.11);

    printf("%#f\n" , -232.11111111);

    printf("\n");

    getch();

    /* 以指数形式输出单、双精度实数 */

    printf("%-10e\n" , 223.11);

    printf("%+10e\n" , 232.11111111);

    printf("% e\n" , -223.11);

    printf("%#e\n" , -232.11111111);

    printf("\n");

    getch();

    /* 以%f%e中较短的输出宽度输出单、双精度实数 */

    printf("%-10g\n" , 223.11);

    printf("%+10g\n" , 232.111111111111);

    printf("% g\n" , -223.11);

    printf("%#g\n" , -232.111111111111);

    printf("\n");

    getch();

    /* 输出单个字符 */

    printf("%-10c\n" , 'a');

    printf("%+10c\n" , 97);

    printf("% c\n" , 'a');

    printf("%#c\n" , 97);

    printf("\n");

    getch();

    /* 输出单个字符 */

    printf("%-20s\n" , "this is a test!");

    printf("%+20s\n" , "2342o34uo23u");

    printf("% 20s\n" , "this is a test!");/* 不足补空格 */

    printf("%#s\n" , "2342o34uo23u");

    printf("\n");

    getch();

    }

    四、精度

    精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。

    /* 测试精度 */

    #include "stdio.h"

    #include "conio.h"

    main()

    {

    printf("%.3d\n" , 5555);

    getch();

    printf("%.3f\n" , 0.88888);

    getch();

    printf("%.3f\n" , 0.9999);

    getch();

    printf("%.4s\n" , "this is a test!");

    getch();

    }

    五、长度

    长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。

    h和整数转换说明符一起使用,表示一个short int 或者unsigned short int类型的数值,

    示例:%hu,%hx,%6.4hd

    hh和整数转换说明符一起使用,表示一个short int 或者unsigned short类型的数值,

    示例:%hhu,%hhx,%6.4hhd

    j和整数转换说明符一起使用,表示一个intmax_t或者uintmax_t类型的数值,

    示例:%jd,%8jx

    l和整数转换说明符一起使用,表示一个long int 或者unsigned long int类型的数值,

    示例:%ld,%8lu

    ll和整数转换说明符一起使用,表示一个long int 或者unsigned long int类型的数值(C99),

    示例:%lld,%8llu

    L和浮点转换说明符一起使用,表示一个long double的值,示例:%Lf,%10.4Le

    t和整数转换说明符一起使用,表示一个ptrdiff_t值(两个指针之间的差相对应的类型)(C99),

    示例:%td,%12ti

    z和整数转换说明符一起使用,表示一个size_t值(sizeof返回的类型)(C99),

    示例:%zd,%12zx

    实例

    main(){

    int a=15;

    float b=138.3576278;

    double c=35648256.3645687;

    char d='p';

    printf("a=%d,%5d,%o,%x\n",a,a,a,a);

    printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);

    printf("c=%lf,%f,%8.4lf\n",c,c,c);

    printf("d=%c,%8c\n",d,d);

    }

    a<--15

    b<--138.3576278

    c<--35648256.3645687

    d<--'p'

    main()

    {

    int a=29;

    float b=1243.2341;

    double c=24212345.24232;

    char d='h';

    printf("a=%d,%5d,%o,%x\n",a,a,a,a);

    /* 其中“%f”和“%lf ”格式的输出相同,说明“l”符对“f”类型无影响

    * “%5.4lf”指定输出宽度为5,精度为4,由于实际长度超过5故应该按实际位数输出,小数位数超过4位 * 部分被截去

    */

    printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);

    /* 输出双精度实数,“%8.4lf ”由于指定精度为4位故截去了超过4位的部分 */

    printf("c=%lf,%f,%8.4lf\n",c,c,c);

    /* 输出字符量d,其中“%8c ”指定输出宽度为8故在输出字符p之前补加7个空格*/

    printf("d=%c,%8c\n",d,d);

    getch();

    }

    使用printf函数时还要注意一个问题,那就是输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右,也可从右到左。Turbo C是按从右到左进行的

    main(){

    int i=8;

    printf("%d\n%d\n%d\n%d\n%d\n",++i,--i,i--,i++,-i--);

    }

    六、特殊用法

    对于m.n的格式还可以用如下方法表示

    char ch[20];

    printf("%*.*s\n",m,n,ch);

    前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。可以在语句之外对参数m和n赋值,从而控制输出格式。

    还一种输出格式 %n 可以将所输出字符串的长度值赋绐一个变量, 见下例:

    int slen;

    printf("hello world%n", &slen);

    执行后变量被赋值为11。

    这种格式输出已经确认为一个安全隐患,并且已禁用。

    特别注意下%*.*s这种用法

    展开全文
  • C语言||字符数组

    2019-03-21 19:25:15
    都可以用*或[]得到单个字符 不同点: 它们在内存中存储位置不同,导致字符数组可以读取和修改,而字符串常量只能读取,不能修改; 最根本的区别在于字符数组存放在全局数据区和栈区,而字符串常量存储在常量区。...

    字符数组和字符串常量

    C语言有两种表示字符串的方法,一种是字符型数组,一种是字符串常量。
    相同点

    1. 都能用%s来输出字符串
    2. 都可以用*或[]得到单个字符

    不同点

    它们在内存中存储位置不同,导致字符数组可以读取和修改,而字符串常量只能读取,不能修改
    最根本的区别在于字符数组存放在全局数据区和栈区,而字符串常量存储在常量区。全局数据区和栈区有读取和写入的权限,常量区只有读取的权限,没有修改权限。

    选取标准:

    1. 如果编程中涉及对数据的读取,那么两者都可以用
    2. 涉及到修改数据,只能用字符数组
    3. 获取用户输入的字符,只能用字符数组
    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
      char*str1="Hello World!";     //使用字符数组
      char*str;                     //另一种使用字符数组的方式
      str="Hello World!";
      char str2[]="Hello World!";   //字符串常量
      int length=string(str2);
      //输出字符串的方式
      for(i=0;i<length;i++)
      {
        printf("%c",*(str+i));
      }
      for(i=0;i<length;i++)
      {
       printf("%c",str[i]);
      }
      printf("%s",str1);
      return 0;
    }
    
    
    
    
    展开全文
  • c语言中的字符字符

    千次阅读 2015-07-03 00:53:52
    字符c语言中有很多类型。常见的就是字符类型了,用关键字char表识:char a = '1'; char b = 'a'; char c = 'b';很简单,用''单引号,切忌,千万不能用双引号,双引号是来表示字符串的。输出字符用printf("%c", b)来...

    字符

    c语言中有很多类型。常见的就是字符类型了,用关键字char表识:

    char a = '1';
    char b = 'a';
    char c = 'b';

    很简单,用''单引号,切忌,千万不能用双引号,双引号是来表示字符串的。

    输出字符用printf("%c", b)来格式化表示,%c表示输出字符:

    printf("%c", a); //单个输出
    printf("%c%c", b, c); //多个一起输出

    由于c语言经常会用到ASCII 码。它是一个数字,字符或者一个符号都会对应一个数字的ASCII 码值 :

    这里写图片描述

    所以,如果我们声明一个字符,但是我们用整型输出,就会输出它对应的ASCII码数字了。

    char a = 'a'; //a 的ASCII 码是 97
    char a = 97;
    printf("%c", a);
    printf("%d", a);

    上面输出啥呢?很显然:a 97

    同样,我们如果申明一个整型,但是,我们用字符输出,就会输出对应的字符了:

    int a = 97; //97 对应 a 
    int a = 'a';
    printf("%c", a); // a
    printf("%d", a); // 97

    值得注意的是,char只能存储一个字符,它的取值范围是:ASCII码字符 或者 -128~127的整数, 所以以下都是错误的:

    char c1 = '我'; //汉字占了3个字节。
    char c2 = '123';
    char c3 = "123";

    总结下:你要申明并定义一个字符的话,要么用''包含一个ASCII的字符,要么是整型(-128~127)。

    字符串

    其他语言中,基本都会有String这个类型的变量来表示字符串,但是,c语言中没有,对,是的,你没听错,没有!!!

    那怎么办呢。我们可以想想,一个字符串是不是就是一个一个的字符拼凑起来的啊。所以,c语言中的字符串就是很多个char拼凑起来的。所以还是用char来申明一个字符串,只不过我们需要加一个[], 来标识申明的是字符串。所以,字符串也就是一个字符数组了。

    c语言中字符串最大的一个特点就是最后一个字符得是\0,是一个结束标志符。

    char s1[4] = {'a', 'b', 'c', '\0'}; //用数组方式申明,并初始化一起
    
    char s3[] = {'a', 'b', 'c', '\0'} //省略数组个数,自动识别
    
    char s2[4]; //先申明;
    s2[0] = 'a'; //再一个一个的初始化。
    s2[1] = 'b';
    s2[2] = 'c';
    s2[3] = '\0';
    

    只能用上面2种方式初始化。下面的是错误的:

    char s4[3];
    s4 = {'a', 'b', '\0'};

    为啥是错误的呢。因为我们已经定义了s4是一个字符串数组了,那么你现在单独用s4的话,其实是在取地址操作 ,等于 &s4[0](以后讲数组会具体讲。所以,你肯定是不能把一个数组赋值给一个指针地址的。

    我们精简省略点写,将{} 也去掉,用""双引号替代,这种方式,c语言会自动再后面加一个\0

    char s5[] = "abc";

    输出字符串就用%s:

    printf("字符串s4:%s", s5); // 输出 => 字符串s4:abc

    注意的是,在声明字符串的时候,一定要带上[], 不然就是一个字符了,一个字符只能装一个字节,所以下面这种方式是错误的:

    char s6 = "qwer";
    展开全文
  • C语言-转义字符

    2018-05-05 14:59:00
    %c 单个字符 %p 指针的值 %e 指数形式的浮点数 %X 无符号以十六进制表示的整数 %o 无符号以八进制表示的整数 %g 自动选择合适的表示法 %P 输出地址符 转载于:https://www.cnblogs.com/micro-st/p/899...

    %d   十进制有符号整数

    %u   十进制无符号整数

    %f    浮点数

    %s   字符串

    %c   单个字符

    %p   指针的值

    %e   指数形式的浮点数

    %X   无符号以十六进制表示的整数

    %o   无符号以八进制表示的整数

    %g   自动选择合适的表示法

    %P   输出地址符

     

    转载于:https://www.cnblogs.com/micro-st/p/8994748.html

    展开全文
  • 1、C语言中字符定义为一种基本数据类型(char),表示单个字符;字符串不是基本数据类型,但可以通过char的数组代替,末尾用’\0’结束。 2、字符串一定是一个char型数组,但是char型数组不一定是字符串;char型数组...
  • C语言字符

    2020-05-05 13:36:24
    文章目录一、ASCII码表1、...在实际开发中,程序员很少用单个字符表示数据,字符的意义主要作为数组的时候可以形成一个字符串。在本章节中,我们重点介绍字符与整数之间的关系和ASCII码的相关知识。 字符类型ch...
  • <br /> C语言的字符串实际上是存储单个字符的数组,结尾包含一个结束该字符串的特别的字符("空字符",用'/0'表示)。 char string1[]="first"实际上有6个元素。  
  • c语言字符

    千次阅读 多人点赞 2013-07-28 11:43:21
    字符串虽然是按组成字符串的各个字符存储在数组的各个元素中,但其往往表示一个整体信息,将其分离成单个字符是没有意义的,所以往往也是将其作为一个整体进行处理。 下面就几个方面对字符串进行介绍。 1. ...
  • 常用: %s - 输出字符串;通过字符串首地址输出字符串,后面接地址; %d - 以十进制形式输出带符号整数; %p - 指针 ;...%f - 浮点数(包括float和...%c - 输出单个字符; 注: %:表示格式说明的起始符号,不可缺少 ...
  • 字符型数据的表示 字符型数据就是字符。 字符型数据是用单引号括起来的一个...字符型数据只能是单个字符,不能是字符串。 字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。如'5'和5 ...
  • C语言字符型数据类型

    千次阅读 多人点赞 2017-03-19 20:03:22
    字符型数据类型就是字符1、字符数据的...字符型数据只能是单个字符,不能是字符串。字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。如'5'和5 是不同的。'5'是字符型数据,不能参与运算。...
  • c语言——字符

    2019-04-05 22:47:00
    char str[] = ... ... char *pstr = str; ...int len = strlen(str), i;...这一切看起来和字符数组是多么地相似,它们都可以使用%s输出整个字符串,都可以使用*或[ ]获取单个字符,这两种表示字符串的方式是不...
  • C语言表示输出类型的格式字符

    千次阅读 2019-05-18 08:04:12
    1、%d-以十进制形式输出带符号整数; 2、%o-以八进制形式输出无符号整数(不输出前缀O); 3、%x-以十六进制形式输出无符号整数(不输出前缀OX); 4、%u-以十进制形式输出无符号...8、%c-输出单个字符; 9、%s-输出...
  • C语言字符型数据

    2015-07-11 12:01:44
    字符型数据就是字符。 字符型数据的表示 字符型数据是用单引号括起来...字符型数据只能是单个字符,不能是字符串。字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。如'5'和5 是不同的。'
  • 单个字符比较问题

    2016-11-10 19:37:00
    c语言单个字符不能比较大小! 比如'A' <'B' , '0'<'9' 这种表示方法是错的, 计算机不能识别字符,只能识别ASCII码! 倘若要比较两个字符,必须以ASCII码的形式进行比较。 unsigned char code...
  • 3.3单个字符的输入和输出 本节要讨论的主要问题 用getchar()从键盘输入单个字符 用putchar()向屏幕输出单个字符 在介绍字符输入输出函数之前,我们先介绍一下什么是字符常量,C语言规定,字符常量就是用单引号扩起来...
  • C语言字符串学习

    2020-02-12 21:00:59
    定义:用单引号括起来的单个普通字符或转义字符字符常量的值:该字符的ASCII码值。 转义字符:反斜线后面跟一个字符或一个代码值表示。 转义字符 含义 转义字符 含义 \n 换行 \t 水平制表 \v 垂直制表...
  • C语言字符串函数总结

    2012-10-15 23:54:02
    今天总结了下C语言字符串函数。 C语言字符串函数总结: 1.字符处理库(ctype)中的函数 ...C语言的字符串实际上是存储单个字符的数组,结尾包含一个结束该字符串的特别的字符("空字符",用'\0'表示)。 c
  • C语言字符串应用总结[转]

    千次阅读 2016-04-26 18:10:28
    字符串处理库string中的字符串处理函数C语言的字符串实际上是存储单个字符的数组,结尾包含一个结束该字符串的特别的字符("空字符",用'\0'表示)。char string1[]="first"实际上有6个元素。ch
  • 1.字符串的储存 字符串的存储: 只要最后一个为‘\0’就代表结束了,注意哈要给’\0’分配一个空间。 2.字符指针 字符指针是指向字符型数据的指针变量。...1.如何访问字符串中的单个字符 str[0]就表示第一个字符,str

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 237
精华内容 94
关键字:

c语言表示单个字符

c语言 订阅