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. Newtonsoft.Json 处理日期格式

    Newtonsoft.Json.Converters.IsoDateTimeConverter iso = new Newtonsoft.Json.Converters.IsoDateTimeConv ...

  2. uni-app的专属强大自适应单位upx,但是这个这是一个大坑,不能动态赋值解决办法

    uni-app 使用 upx 作为默认尺寸单位, upx 是相对于基准宽度的单位,可以根据屏幕宽度进行自适应.uni-app 规定屏幕基准宽度750upx. 开发者可以通过设计稿基准宽度计算页面元素 ...

  3. [adb]查看 App的appPackage和appActivity

    最近在写app的UI框架,写脚本之前需要知道app的包名和activity,如果获取呢: 需求配置abdrioid sdk环境 方法1:abd log 1. 打开cmd命令窗口2.在命令窗口中输入,a ...

  4. vue scss 安装

    1.开始在vue项目中使用sass,在命令行输入一下命令进行安装(使用git命令行要用shift+insert 进行粘贴否则粘贴不上) cnpm install node-sass --save-de ...

  5. 1016 部分A+B (15 分)

    正整数 AAA 的“DAD_AD​A​​(为 1 位整数)部分”定义为由 AAA 中所有 DAD_AD​A​​ 组成的新整数 PAP_AP​A​​.例如:给定 A=3862767A = 3862767 ...

  6. 自动装箱拆箱(Autoboxing,Unboxing)

    自动装箱和拆箱 https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html 1.5才有(Autoboxing,Unboxing) ...

  7. 系统和帮助-Linux基础知识

    iOS镜像: 硬盘分区:留出一些空间;实在不成,可安装完成以后,新增一块虚拟硬盘; 终端:terminal 用户界面: GUI:图形界面 GNome KDE CLI: bash,zsh,sh,csh, ...

  8. 用户输入input函数和代码注释

    一.读取用户输入 py3中input()读取用户输入,输出全部是默认str字符串数据类型,一般将其赋值变量,用户输入才继续往下走程序.(py2的不同已单独列出随笔) 二.注释 注释的作用:代码量大的时 ...

  9. Python中字符串操作函数string.split('str1')和string.join(ls)

    Python中的字符串操作函数split 和 join能够实现字符串和列表之间的简单转换, 使用 .split()可以将字符串中特定部分以多个字符的形式,存储成列表 def split(self, * ...

  10. GOF23设计模式之代理模式

    GOF23设计模式之代理模式 核心作用:通过代理,控制对对象的访问.可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理(即:AOP的微观实现) AOP(Asp ...