1、常量字符串: 双引号引起来的任意内容
2、如果使用指针接收一个常量字符串, 那么字符串仍然存储在常量区, 返回的是字符串的起始地址,
不可以指针修改常量字符串的内容,只可以读
3、常量区用户只能读不可以写
stdin :标准输入
stdout :标准输出
stderr: 标准出错
char *fgets(char *s, int size, FILE *stream);
函数功能: 获取一行字符串
参数说明:
s: 存放字符串内存的起始地址
size: 内存的大小
stream:文件指针, 标准输入缓冲区: stdin
说明: 假设键盘输入的字符个数为n (包括回车键), 如果 n < size,获取所有的字符,在回车键后面加尾零,
如果 n>=size, 获取size-1个字符,最后一个元素的位置存储尾零
strlen: 计算字符串的长度, 不包含尾零的!!!!
char *strcpy(char *dest, const char *src);
函数说明: 将src指向的字符串拷贝到dest指向的内存中, 包括尾零一起拷贝过去
参数说明:
dest:目标内存的起始地址, 一定是一个有效的内存
src: 源字符串的起始地址, 可以是常量字符串的起始地址,也可以是存放在内存中字符串的起始地址
char *strcat(char *dest, const char *src);
函数功能: 将src指向的字符串追加到dest指向的字符串后面, 重写尾零的!!!
nt strcmp(const char *s1, const char *s2);
strcmp: 字符串比较函数, 字符串比较是对应字符比较的!!
返回值有三种情况:
> 0: s1>s2
= 0: s1==s2
< 0: s1 < s2
字符串数组: 本质就是一个二维数组
1、结构体指针变量
struct student *p ;
2、->:
结构体指针变量->成员名称 :表示指针指向的结构体变量的某个成员
3、如何通过指针访问结构体变量成员:
(1)(*指针变量).成员名称
(2) 指针变量->成员名称
1、结构体,本质就是自定义数据类型, 类型的名称: struct 结构体名称, 理解成一张图纸
2、结构体的定义
struct 结构体名称
{
数据类型 成员名称;
...
};
3、结构体变量
struct 结构体名称 变量名;
4、如何访问结构体变量中的成员: .
结构体变量.成员名称 :表示结构体变量中的某个成员
5、结构体名称可以省略,但是只能定义结构体的时候定义变量
指针操作数组每一元素的方式:
1、 p++
(*p).成员名称
p->成员名称
2、 p+i
(*(p+i)).成员名称
(p+i)->成员名称
3、 p[i]
p[i].成员名称
嵌套结构体:
1、定义结构体时, 结构体中的类型应该都是已经存在的类型
2、如果嵌套结构体,那么该结构体在之前要已经定义过
3、每一个结构体变量只能访问自己的成员,如果有嵌套结构体成员,要一级一级访问
FILE *fopen(const char *pathname, const char *mode);
函数功能: 打开文件
参数说明:
pathname: 文件路径
mode : 打开模式 (文本文件操作的方式: r w a, 二进制文件操作的方式:rb wb ab)
返回值: 成功返回结构体的起始起始
失败返回NULL
1、以读的方式打开文件,如果文件不存在,打开失败!
2、以写的方式打开文件,如果文件不存在,创建文件,如果文件存在,清空文件中所有的内容
3、以追加的方式打开文件,如果文件不存在,创建文件, 如果文件存在,不清空内容,文件指针指向内容的最后
size_t fwrite(const void *ptr, size_t size, size_t nmemb,
FILE *stream);
函数功能: 以二进制的方式写文件
参数说明:
ptr: 写数据的起始地址
size: 数据的单位大小
nmemb:数据的个数
stream: 文件指针
返回值:返回成功写进去的个数
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
函数说明: 以二进制的方式读文件
参数说明:
ptr: 存放读数据内存的起始地址
size : 数据的单位大小
nmemb: 读数据的个数
stream : 文件指针
返回值: 返回值等于0 ,表示到达文件结尾!!!!