精华内容
下载资源
问答
  • C-字符串和格式化输入\输出1.字符串是一个或多个字符序列。字符串常量用双引号括起来“abc”,字符常量用单引号括起来‘’。2.数组是同一类型数据元素有序序列。数据元素在内存中是连续存储。C中没有为字符串...

    C-字符串和格式化输入\输出

    1.字符串是一个或多个字符序列。字符串常量用双引号括起来“abc”,字符常量用单引号括起来‘’。

    2.数组是同一类型的数据元素的有序序列。数据元素在内存中是连续存储的。

    C中没有为字符串定义专门的变量类型,而把它存储在char数组中。

    C的字符串存储通常以空字符‘\0’结束。空字符不是数字0,而是ASCII码为0的非打印字符,用来标记字符串的结束。空字符的存在意味着,char数组长度必须比要存储的字符数多1。

    char name[10];//声明了一个长度为10的字符数组。

    #define NAME "gaotian"

    scanf("%s",name);

    printf("%s,%s",name,NAME);

    3.scanf()开始读取输入之后,会在遇到第一个空白字符(空格,制表符\t,换行符\n)处停止读取。

    4.字符串和字符的区别

    字符‘x’是基本数据类型。字符串“x”是衍生数据类型char数组。“x”其实包含两个字符,‘x’和‘\0’。

    5.sizeof()运算符以字节为单位给出数据或类型的大小。strlen()函数以字符为单位给出了字符串的长度。对于同一个字符串常量,sizeof会把‘\0’计算在内,因为它也占了内存,而strlen不会。

    6.字符常量

    程序中需要用到常量时,应使用字符常量,一是可读性高,二是方便修改。

    四种方式:

    -声明一个变量,再赋值为所需的常量。

    int age=12;

    -预处理命令定义符号常量(#define 符号名 常量值)

    注意:

    末尾没有分号;不属于C语句

    符号名通常全大写

    编译时,符号名后面的所有内容将被用来替换符号名出现的地方

    这样定义的常量被称为明显常量。

    #define NAME “gaotian”

    #define AGE 12

    -const修饰符

    将变量声明为只读,可以读取用于显示和计算,不能被修改。

    const int AGE = 12;

    -枚举类型enum

    7.C头文件limits.h和float.h中提供了关于了整型和浮点型大小限制的详细信息。定义了一系列的明显常量。

    8.printf()-读取,解释,转换(数值转换成字符串文本),打印

    printf(),scanf()称为输入/输出函数或I/O函数。互为逆操作。

    printf(),scanf()都是有了控制字符串(前者是要打印的字符和转换说明符;格式字符串(转换说明符,普通字符))和参数列表(前者是变量,常量,表达式;后者是指向变量的指针)。

    printf()打印的是字符串文本,scanf()接收的也是字符串文本(即键盘输入的是字符串文本)。

    参数列表中变量的类型决定数据存储的方式。控制字符串中的转换说明符决定数据读取的方式,指定数据显示的形式。

    注意:格式说明符和变量的个数和类型必须一一对应。

    printf()中的转换说明符:

    %a,%A 浮点数,十六进制数,p-计数法

    %e,%E 浮点数,e-计数法

    %f 浮点数,十进制计数法

    %g,%G 根据数值不同,自动选择%f,%e,%E。%e,%E在指数小于-4,大于等于精度时使用。

    %c 一个字符

    %s 字符串

    %p 指针

    %d ,%i 有符号十进制整数

    %u 无符号十进制整数

    %o 无符号八进制整数

    %x,%X 无符号十六进制整数

    %% 打印一个%

    printf()中的修饰符(转换说明符的修饰符):

    - 左对齐

    + 有符号的值若为正,显示+号;若为负,显示-号

    (空格)有符号的值若为正,显示带前导空格;若为负,显示-号;+修饰符会覆盖(空格)修饰符

    # 对于%o格式,以0开头;对于%x,%X格式,以0x,0X开头;对于所有浮点数格式,#保证即时不跟任何数字,也打印一个小数点字符;对于%g,%G,#防止尾随零被删除。

    0(零)对于所有数字格式,用前导零而不是空格填充字段宽度。若出现了-修饰符或指定了精度,则忽略该修饰符

    digit(s)字段的最小宽度

    .digit(s) 精度。对于%e,%E,%f,表示小数的右边的数字位数。对于%g,%G,表示有效数字的最大位数。对于%s,表示字符串中的最大长度。对于整数格式,表示数字的最小位数,不够填充前导零。注意.和.0等同。

    h 和整数转换说明符一起用,表示short int ,unsigned short int

    hh 和整数转换说明符一起用,表示short char ,unsigned short char

    l 和整数转换说明符一起用,表示long int ,unsigned long int

    ll 和整数转换说明符一起用,表示long long int,unsigned long long int

    L 和浮点数转换说明符一起用,表示long double

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

    t 和整数转换说明符一起用,表示一个ptrdiff_t值(两指针差值的类型)

    注意:有用于打印double型和long double型的转换说明符,但没有float型的转换说明符。因为,C中符点型默认时double型,float型会自动转换为double型。

    printf()会按照转换说明符表示的数据类型的占位大小和存储方式对计算机中二进制数值进行读取和解释,并转换成一系列字符(字符串),以便显示。不改变原值,只是指定不同的表现形式。

    C中的函数一般都有返回值。就是由函数计算返回给调用程序的值。

    printf()返回值:正常,返回所打印的字符的个数,包含所有打印字符,包括空格和换行符。错误,返回一个负数。

    printf()打印长字符串:

    空白字符(空格,制表符,换行符)若不是用来分隔元素,C都将忽略。

    四种方式:元素间回车(不能在引号括起来的字符串中间断开);使用多个printf()语句,最有一个包含‘\n’;反斜杠\+回车;字符串连接法(两个字符串间仅用空白字符分隔,C会组合成一个字符串处理)

    9.scanf()-读取(逐个字符读取),转换(字符串文本转换成数值),解释,存储

    scanf()读取基本数据类型,变量名前加&(取地址符);读取字符数组,不加&;

    scanf()根据空白字符将输入分成多个字段,并依次把转换说明符和字段相匹配。

    scanf()中的转换说明符:

    %e,%E,%f,%F,%g,%G,prinft()用于float和double,scanf()只用于float。

    %c 解释为一个字符

    %s 解释为一个字符串,从第一个非空白字符起,到下一个空白字符止。

    %d,%i 解释为一个有符号的十进制数

    %u 无符号的十进制数

    %o 有符号的八进制数

    %x,%X 有符号的十六进制数

    %p 一个指针(地址)

    %a,%A 浮点型

    %e,%E,%f,%F,%g,%G float浮点数(仅float,对于double需加l修饰符,对于long double需加L修饰符)

    scanf()的转换修饰符:

    * 滞后赋值,丢弃对应读取内容

    digit(s)最大字段宽度,在达到最大字段宽度或遇到空白字符时,停止对输入项的读取

    h %hd,%hi,表示会存储在short int;%hu,%ho,%hx表示会存储在unsigned short int;

    hh 把整数读作signed char,unsigned char

    l %ld,%li long;%lu,%lo,%lx unsigned long;%le,%lf,%lg double;%Le,%Lf,%Lg long double;

    ll 把整数读作long long ,unsigned long long

    如果没有这些修饰,d,i,o,x指int型;e,f,g指float型。

    scanf()输入原理:

    scanf的转换说明符提供了要读取的数据类型信息,每个数据类型的表示所需的字符构成特定的字符集内,如%d对应有符号十进制整数,字符集是{0,1,2,3,4,5,6,7,8,9,-,+}。

    scanf逐个字符的读取输入字符串,跳过空白字符,直到遇见第一个非空白字符,若在特定字符集内,读取保存,继续扫码下一个字符,直到遇到第一个非特定字符集字符,scanf结束读取,并将最后读取的非特定字符集字符放回输入。最后,scanf将它读取的字符串转换解释成数值,存入指定变量中;若第一个非空白字符就是非特定字符集字符,scanf()会停在那里,并把读取的字符放回输入,不会读取下一个字符,指定的变量中也不会被赋上任何值。下一个scanf()依然会从这个字符开始读取。

    空白字符,非特定字符集字符,字段宽度,读取到输入内容末尾都是scanf()停止读取的条件。

    scanf读取%s时,会在字符串最后添加‘空字符\0’,再存入char数组,使之成为C字符串。

    scanf读取%c时,所有字符平等读取,包括空白字符也会读取。

    scanf()的格式字符串中可以有普通字符。除了空格字符外,你的格式字符串一定要与输入字符串精确匹配。如scanf(%d,%d);你必须输入12,345或12,  345,12后面必须紧跟逗号‘  ,’不能有空格。在格式串中的空格表示跳过下一个输入项之前的任何空格。scanf(%d,  %d);你可以输入12,345;12  ,345;12  ,  345;

    scanf()返回值:返回成功读取的项目的个数;什么都没读取,返回0;读取到文件结尾,返回EOF。

    转换说明符的修饰符*,在printf()中,可用*表示可变的字段宽度,在参数列表中需要对应的变量。在scanf()中表示丢弃读取的对应项。

    展开全文
  • printf() 是一个标准库函数,使用时需要 include 头文件 stdio.h。#includeprintf() 函数的调用形式为:printf("格式控制字符串", 输出列表);...下面是一些常用的指定宽度的格式输出例子。1、格式...

    edf7608d34bdd0849c8d70b86cabd0fb.png

    printf() 是一个标准库函数,使用时需要 include 头文件 stdio.h。

    #include

    printf() 函数的调用形式为:

    printf("格式控制字符串", 输出列表);

    其中,格式控制字符串用于指定输出格式,有格式字符串和非格式字符串两种形式。

    c436a12d84f82eef8237a25e7b3b85df.png

    格式字符串有 %,%后面跟着各种格式字符,用以说明输出数据的类型、形式、长度、小数位等。

    下面是一些常用的指定宽度的格式化输出例子。

    1、格式化输出整型

    d 格式,用来输出十进制整数。

    %d:按整型数据的实际长度输出;

    %md:m为指定的输出宽度。如果数据的位数小于m,则左端补空格;若大于m,则按实际位数输出;

    %0md:同上,但这里如果数据的位数小于m,则左端补0;若大于m,则按实际位数输出。

    6b9bdecba0ff9bc228720da058d5bb0d.png

    2、格式化输出浮点型

    f 格式,用来输出小数。

    %f:整数部分全部输出,并输出6位小数;

    %.nf:整数部分全部输出,并输出n位小数;

    %m.nf:输出共占m列,n位小数,若数值宽度小于m则左端补空格。

    c1df52d2626e61d5013f0ec9ce9938d9.png

    3、格式化输出字符串

    s 格式,用来输出字符串。

    %s:输入全部字符串;

    %ms:输出的字符串共占m列,若字符串本身的长度小于m,则左补空格;若字符串本身的长度大于m,则全部输出。

    93d4301f009142297da96ce17f97c47e.png

    附上全部代码:

    #include

    int main()

    {

    int a = 8;

    int b = 16;

    printf("1. a: %d, b: %dn", a, b);

    printf("2. a: %4d, b: %4dn", a, b);

    printf("3. a: %04d, b: %04dnn", a, b);

    double x = 8.12345678;

    double y = 16.12345678;

    printf("1. x: %f, y: %fn", x, y);

    printf("2. x: %.2f, y: %.2fn", x, y);

    printf("3. x: %6.2f, y: %6.2fn", x, y);

    printf("4. x: %06.2f, y: %06.2fnn", x, y);

    char s[] = "hello";

    printf("1. s: %sn", s);

    printf("2. s: %8sn", s);

    return 0;

    }

    展开全文
  • 好,今天继续我们的编程语言课程,这节课我们讲讲关于字符串和格式化输入输出的一些知识,获得知识是为了更好的在实践的过程中有理论知识的铺垫,而不是临危受命。总之学习是为了更好的生存更好的在这社会上生存,你...

    好,今天继续我们的编程语言课程,这节课我们讲讲关于字符串和格式化输入输出的一些知识,获得知识是为了更好的在实践的过程中有理论知识的铺垫,而不是临危受命。总之学习是为了更好的生存更好的在这社会上生存,你适应不了社会,社会总将会淘汰你。

    上 节课,我们讲到了数据和c,相信大家也认识到了很多相关的理论知识,那么现在我们就顺藤摸瓜,继续学习。首先这节课的主角是scanf()和 printf()函数和char数组类型,也就是我们之前说的一个是打字 ,一个是把字打印出来,理论就是这样的操作过程。当然故事有了主角没有配角哪能演好一出戏呢,那么这个配角就是转化说明修饰符,目的就是来处理格式化的输 入与输出。就好像对号入座的道理一样,就比如你上火车了,是不是有个座位号给你啊,然后你就要必须对着这个号码进行对号入座。那么现在我就来介绍几个最常 见的转化说明修饰符。

    e75123c85a40fa2a706510e1d4d85fdb.png

    最 后的主角char闪耀登场,用一个例子说明一下 char name[40];这个语句说明了在name的储存空间中开辟了40个元素数目,因为是char的声明所以每一个元素大小为1B,不过在这个字符串数组中 只能放入39个元素的数目,这是为什么呢,原来,在字符串数组中最后一个元素必须要加一个,以表示结束的标志。

    来看看一个例子把两个内容结合一下。

    #include

    int main ()

    {

    char name[40] ; //声明一个叫name的储存空间,数组的元素数目是40

    printf("what is your name ?\\n");//转化说明字符/n换行

    scanf("%s,name");//输入一个字符串,使用了%s的转化修饰符,表示输入字符串

    printf("hello,%s.\\n",name);//输出字符串

    return 0;

    }

    大 家运行这个程序软件会发现一个很奇怪很有趣的现象。比如输入 xiao ming 输出的结果不是xiao ming而是xiao,这到底发生了什么事情呢,这就要说一说scanf函数的一个特点了,使用%s,scanf()只会读入一个单词就是连续紧挨的字 符,而不是一个语句的读入,解决一个语句的读入可以使用gets()函数,这个函数我们会到后面有详细的讲解,再说回scanf()的特点,它说到底就是 遇到空白字符,转化说明字符就会停止读入。这里需要十分留意。

    说到scanf()函数,萌小编也着实给他坑了一把,说实在应该是微软坑了我 一把,在小编使用visual stdio 2013进行编程的时候发现,当我使用sacanf函数时总会报错,一开始我也以为自己的语句有问题,但是找了半会也找不出来,最后索性找师傅问了一下, 原来,微软为了内存保护为原则的目的,必须使用scanf_s("语句",转化说明字符,储存的空间)的模式进行编写,可以不让数据过大导致内存不够而溢 出到另一个储存空间,当时我真的是直接骂娘了,醉了,这微软真会玩,看来win10小编也不升先了,不然给微软算计一番就不好。看完小编的文章是不是很精彩,是不是想要成为编程语言的高手,更多关于在线教育的文章尽在课课家,希望你们多多关注。

    展开全文
  • C语言格式字符的输出指令

    千次阅读 2018-08-22 21:29:29
    C语言格式字符输出格式有d,o,x,u,c,s,f,e,g等。 如 %d整型输出,%ld长整型输出, %o以八进制数形式输出整数, %x以十六进制数形式输出整数,或输出字符地址。 %u以十进制数输出unsigned数据(无符号数)。...

    C语言格式字符输出格式有d,o,x,u,c,s,f,e,g等。

    %d整型输出,%ld长整型输出,
    %o以八进制数形式输出整数,
    %x以十六进制数形式输出整数,或输出字符串的地址。
    %u以十进制数输出unsigned型数据(无符号数)。注意:%d与%u有无符号的数值范围,也就是极限的值,不然数值打印出来会有误。
    %c用来输出一个字符,
    %s用来输出一个字符串,
    %f用来输出实数,以小数形式输出,默认情况下保留小数点6位。
    %.100f用来输出实数,保留小数点100位。
    %e以指数形式输出实数,
    %g根据大小自动选f格式或e格式,且不输出无意义的零。

    展开全文
  • 整型定义和输入输出,大小, 字符型, 实型, 字符串常量,字符输入与输出格式化输入与输出, 类型转换
  • 使用格式控制字符将数据输出到text型的磁盘文件中
  • python-输入输出-格式输出字符串 输入3行字符串,然后对其按照说明进行格式输出 输入格式: 第1行:一个浮点数字符串 第2行:一个整数字符串 第3行:一个非数值型字符输出格式: 对浮点数字符串: 第1行: 保留2...
  • 提出了两种变长编码字符型数据保留格式加密方案。方案1基于Feistel网络构建合适分组密码,并结合cycle-walking确保密文输出在合理范围内,适用于明文较短且需要隐藏字符个数保留格式加密;方案2将明文消息空间...
  • 7-5 jmu-python-输入输出-格式输出字符串 (10 分) 输入3行字符串,然后对其按照说明进行格式输出 输入格式: 第1行:一个浮点数字符串 第2行:一个整数字符串 第3行:一个非数值型字符输出格式: 对浮点数...
  • 在C语言中: ... 1)用 scanf() 函数输入 double 类型变量时,转换说明中转换字符(占位符)只能用 lf,即%lf,写成 %f 无法正确输入double数据;  2)用 printf() 函数输出 doubl
  • 1. 字符数据格式化输入 (1) getchar函数 int getchar() // stdio.h 功能:读取用户按键信息,返回值是用户所键入ASCII码。 该函数没有参数,有一个int返回值。当调用getchar时,程序就等待用户按键。用户...
  • 字符数据格式化输入及输出

    千次阅读 2014-12-05 17:14:49
    1. 字符数据格式化输入 (1) getchar函数 int getchar() // stdio.h 功能:读取用户按键信息,返回值是用户所键入ASCII码。 该函数没有参数,有一个int返回值。当调用getchar时,程序就等待用户按键。...
  • C语言输出格式字符的意义

    千次阅读 2010-02-04 10:20:00
    C语言输出格式字符使用还是很广,在VC++时代,CString::Format(char*,args...),便相当于console application时代printf(char*,args...);所以还是值得好好学习   今天要输出一个unsigned long , 不知道该...
  • 7-5 jmu-python-输入输出-格式输出字符串 (10 分) 输入3行字符串,然后对其按照说明进行格式输出 输入格式: 第1行:一个浮点数字符串 第2行:一个整数字符串 第3行:一个非数值型字符输出格式: 对浮点数...
  • 输入3行字符串,然后对其按照说明进行格式化输出 输入格式: 第1行:一个浮点数字符串 ...每个输出的元素之间以一个空格分隔。 对于整数: 第3行:在一行分别输出其二进制与小写十六进制,之间以一...
  • 做数据处理时,发现解析出来数据为这种格式 [{"name": "XXX", "playUrl": "http://183.215.102.57:8089/180000000000/00000001000000000003000000099922/main.m3u8"}, {"name": "YYY", "playUrl": ...
  • 3、输入输出-格式化输出字符串(10分) 输入3行字符串,然后对其按照说明进行格式化输出 输入格式: 第1行:一个浮点数字符串第2行:一个整数字符串第3行:...每个输出的元素之间以一个空格分隔。 对于整数:第3行...
  • Python 字符格式输出的3种方式

    万次阅读 多人点赞 2018-08-17 15:26:04
    1. % print ('我叫%s, 身高%scm' % (name,height)) ** 传入值为元组,依次填充 %s :占位符 str() %d-:十进制 整数 ... %f :浮点 指定长度: %5d 右对齐,不足左边补空格 %-5d - 代表左对齐,不足右...
  • ![图片说明]...!...如上如所示,我想将一个LPCTSTR型字符格式输出,但sprintf貌似不能实现这个功能,我想转换结果也是LPCTSTR类型以作为loadBitmap()参数,请问我该怎么办?谢谢!
  • 1、格式输出字符: %d 十进制有符号整数 %ld 十进制long有符号整数 %u 十进制无符号整数 %o 以八进制表示整数 %x 以十六进制表示整数 %f float浮点数 %lf double浮点数 %e 指数形式浮点数 %c ...
  • sprintf()跟printf()用法很相似,打印目的地不同。前者(sprintf)是打印到字符串中,后... //format格式和printf()的格式控制符一样 参数列表 buffer:char指针,指向将要写入的字符串的缓冲区。 format:格式...
  • 问题:将一个字符类型按16进制输出输出格式为0xab, 0x后面要求是2位,不够2位则补0,比如“0x0b”。 常见错误做法是: #include <stdio.h> int main() { char a = 0x41; // a = 'A' ...
  • C# Tostring 格式输出字符串全解

    千次阅读 2018-04-24 16:56:10
    格式字符串采用以下形式:Axx,其中 A 为格式说明符,指定格式化类型,xx 为精度说明符,控制格式输出的有效位数或小数位数。格式说明符说明示例输出C货币2.5.ToString("C")¥2.50D十进制数25.ToString...
  • printf()函数的格式输出输出格式 格式输出:%d, %s, %c, %f, %o, %x, %p %d : 以十进制形式输出数据; %s : 以字符串形式输出数据; %c : 以字符形式输出数据; %f : 以浮点形式输出数据,默认保留小数点后6位...
  • 1.% print ('我叫%s, 身高%scm'% (name,height))** 传入值为元组,依次填充 ...%f:浮点 指定长度: %5d右对齐,不足左边补空格 %-5d- 代表左对齐,不足右边默认补空格 %05d右对齐,不足左边补0 浮点数: ...
  • C语言深度学习之字符串与格式输入/输出 char数组和空字符 由于C语言中并没有专门用来储存字符数据类型,故用char类型数组来储存它们。并且每一个字符串最后都以空字符(null字符)结尾。字符串中的字符被储存...
  • 最近在做一个C的嵌入式项目,发现在C语言...的格式字符型变量值以十六进制形式打印出来,会出现一个小问题,如下: C代码   char buf[10] = {0};  buf[0] = 0xbf;  printf("%2x\n\n\n",...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,809
精华内容 723
关键字:

字符型输出的格式