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(),%s开始读取输入之后,会在遇到第一个空白字符(空格,制表符\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()中表示丢弃读取的对应项。

C-字符串和格式化输入\输出的更多相关文章

  1. 重学C语言---04字符串和格式化输入/输出

    1.程序示例 //talkback.c一个能为你提供一些信息的对话框 #include <stdio.h> #include <string.h> //提供strlen函数原型 ...

  2. C Primer Plus学习笔记(三)- 字符串和格式化输入/输出

    从一个简单的例子开始 #include <stdio.h> int main() { char name[10]; printf("Input Your Name:\n" ...

  3. 【C语言学习】《C Primer Plus》第4章 字符串和格式化输入/输出

    学习总结 1.String str=”hello world!”;(Java),char[20]=” hello world!”;(C).其实Java字符串的实现,也是字符数组. 2.字符串的尾部都会 ...

  4. C Primer Plus 第4章 字符串和格式化输入/输出 编程练习

    1. #include <stdio.h> int main(void) { ]; ]; printf("请输入您的名字: "); scanf("%s&quo ...

  5. Java字符串的格式化与输出

    Java字符串的格式化与输出 在C语言中格式化输出能够通过printf()函数实现,在Java中无需借助第三方工具相同能够实现此功能.自Java SE5后,java也提供了C语言中printf()风格 ...

  6. c语言学习笔记第四章——字符串和格式化输入、输出

    B站有视频演示 本章学习printf函数的输入输出,字符串的定义与实用. 字符串 字符串(character string)是一个或多个字符的序列,如下所示: "Zing went the ...

  7. java 日期的格式化 输入/输出

    想要得到形如2018.07.09的格式化好的当天日期 创建Date对象,调用SimpleDateFormat对象的format方法: indexstr="logstash-"+ne ...

  8. 《C语言程序设计现代方法》第3章 格式化输入/输出

    完整的细节将留到第22章中介绍. 调用printf函数一次可以打印的值的个数没有限制. 注意:C语言编译器不会检查格式串中转换说明的数量是否和输出项的数量相互匹配,也不会检查转换说明是否适合要显示项的 ...

  9. Day1-用户输入及字符串格式化输入

    1.用户输入--input和getpass函数 2.字符串的格式化 ############################################# 一.用户输入--input()函数 #! ...

随机推荐

  1. EF MySql:Specified key was too long; max key length is 767 bytes解决方案

    [DbConfigurationType(typeof(MySqlEFConfiguration))]//添加特性 public partial class Model1 : DbContext { ...

  2. 浏览器 HTTP 协议缓存机制详解--网络缓存决策机制流程图

    1.缓存的分类 2.浏览器缓存机制详解 2.1 HTML Meta标签控制缓存 2.2 HTTP头信息控制缓存 2.2.1 浏览器请求流程 2.2.2 几个重要概念解释 3.用户行为与缓存 4.Ref ...

  3. 输出字符串格式化/ Linq对数组操作 /一个按钮样式

    textBox1.Text = dateTimePicker1.Value.ToString("yyyy-MM-dd HH:mm:ss"); , , , , , , , , , , ...

  4. 【转载】push to origin/master was rejected错误解决方案

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a137151062/article/details/78820806idea中,发布项目到OSChi ...

  5. 面试官问你:MYSQL事务和隔离级别,该如何回答

    一.事务 事务是由一组SQL语句组成的逻辑处理单元,是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚.事务具有以下4个属性,通常简称为事务 ...

  6. Keras学习基础(2)

    目录: Keras的模块结构 数据预处理 模型 网络层 网络配置 Keras中的数据处理 文本预处理 序列预处理 图像预处理 Keras中的模型 Sequential顺序模型 Model模型[通用模型 ...

  7. 【剑指Offer】40、数组中只出现一次的数字

      题目描述:   一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度为O(n),空间复杂度为O(1).   解题思路:   这道题目相对比较难 ...

  8. 洛谷P1115 最大子段和【dp】

    题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入输出格式 输入格式: 第一行是一个正整数NN,表示了序列的长度. 第二行包含NN个绝对值不大于1000010000的整数A_iAi ...

  9. jQuery Webcam Plugin jscam.swf文件反编译工具使用说明

    jQuery webcam plugin是一个在ie,firefox,chrome下都可以用的摄像头摄像及拍照用的插件. (http://www.xarg.org/project/jquery-web ...

  10. 用DIME格式来组织自定义格式

    直接网际消息封装(Direct Internet Message Encapsulation,即DIME)格式提供了一种简单而又标准的机制,这个机制可以把多文本(multiple text)和二进制数 ...