C语言高级-结构,共用体,文件,链表
C语言结构
标准声明方式
struct student{
int age;
char sex;
};
这个可以在main函数中定义:
struct student a={ 20,'m'};
声明同时定义
struct student{
int age;
char sex;
}a = {20,'m'};//这里就定义了变量a
最不科学的方式
struct {
int age;
char sex;
}a = {20,'m'};
结构体数组
struct student{
int age;
chat name[10];
};
struct student s_1[10];
s_1 [0].age= 3;
s_1[0].name[0] = 's';
结构体指针
strunc student{
int age;
chat sex;
};
struct student *p;
struct student s_1;
p = &s_1;
p->age = 23;
p->sex = 'M';
位域
把一个字节分配给成员
struct data{
unsigned int a:2;//表示data的低两位
unsigned int b:4;//表示3-6
//unsigned int :0; //如果一个字节不够就使用这句代码,这与代码叫空域
unsigned int c :2;//6-8
};
strunct data s1,s2;
位域可用来进行位操作
C语言结构体这里就做个简单了解,后期学习stm32的时候我会着重再讲一遍。这里我就不太深的涉及指针,内存分配等这些内容。
//________________________________________________________________________________________________________________________________________________
共用体
什么是共用体
共用体的定义:
union 共用体名{
成员列表
}
共用体中所有成员占用同一段内存,修改一个成员会影响其余所有成员。同一时刻只能保存一个成员的值,如果对新成员赋值就会覆盖之前成员。
union data{
int as;
chat bs;
double cs;
};
union data a,b,c;
a.as = 2;
b.bs = 's';
//_____________________________________________________________________________________________________________________________________
C语言文件的操作
START:
C语言中程序结束了,信息就没了,此时就需要讲所需要的信息保存下来。显然不能保存在内存中,所以就要以文件形式保存在外部储存器
步骤:
创建文件指针变量 FILE * fp;
打开文件 fp = fopen
读写文件
读文件 fscanf(),fread()
写文件 fprintf(),fwrite()
关闭文件 fclose(fp);
如下面的代码:
#include "stdio.h"
void main() {
//定义一个文件指针变量
FILE * fp;
//让文件指针以只写的方式指向这个地址
fp = fopen("E:\\fire.txt","wt");
//用fprintf函数将信息写入文件指针fp指向的文件中
fprintf(fp, "sjdlksajdiokljf");
//关闭文件指针
fclose(fp);
//定义一个字符数组存文件信息
int arr[50];
//让文件指针以只读的方式指向这个地址
fp = fopen("E:\\fire.txt","rt");
//用fscanf函数讲该文件文件信息读取出来放入字符数组中
fscanf(fp,"%s",arr);
fclose(fp);
printf("%s",arr);
}
//_____________________________________________________________________________________________________________________________________________
文件使用方式 意 义
“rt” 只读打开一个文本文件,只允许读数据
“wt” 只写打开或建立一个文本文件,只允许写数据
“at” 追加打开一个文本文件,并在文件末尾写数据
“rb” 只读打开一个二进制文件,只允许读数据
“wb”
只写打开或建立一个二进制文件,只允许写数据
“ab” 追加打开一个二进制文件,并在文件末尾写数据
“rt+”
读写打开一个文本文件,允许读和写
“wt+” 读写打开或建立一个文本文件,允许读写
“at+”
读写打开一个文本文件,允许读,或在文件末追加数 据
“rb+” 读写打开一个二进制文件,允许读和写
“wb+”
读写打开或建立一个二进制文件,允许读和写
“ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据
ssss
文件常用函数表
fopen() 打开文件
fclose() 关闭文件
fread() 将数据从文件中读到缓冲区
fwrite() 将数据从缓冲区写到文件中
fprintf() 类似于printf
fcanf() 类似于scanf
feof() 判断文件活动指针是否达到文件末尾,达到就返回true
rewind() 将文件位置指示器重新至于文件开头
remove() 删除文件
fflush() 将内部缓冲区的数据写入指定文件
END:
C语言高级-结构,共用体,文件,链表的更多相关文章
- C语言笔记 09_共用体&typedef&输入|输出
共用体 共用体允许您在相同的内存位置存储不同的数据类型.您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值.共用体提供了一种使用相同的内存位置的有效方式. 定义共用体 为了定义共用体, ...
- C语言中的共用体(union)和枚举(enum)
1 union union Data{ int i; char ch; float f; }a={1, 'a', 1.5}; //错误 union Data a = {16}; //正确 union ...
- C语言作业06--结构体&文件
1.本章学习总结 1.1 思维导图 1.2学习体会 在本周的学习中,我们学习了关于结构体和文件的内容.定义结构体可以使代码整个练习更加紧密,非常实用,当我们需要在对一个个体的不同属性调用时可以更加系统 ...
- (转)C语言union(联合体 共用体)
一直以来,union都是个很少用到的东西,对于这些不常用的结构往往记不住.这次看书又看到了,还是学习一下吧.一般在Windows API的一些数据结构中才能看到这个union,其实并不复杂.本质上来说 ...
- [C#.NET 拾遗补漏]14:使用结构体实现共用体
在 C 和 C# 编程语言中,结构体(Struct)是值类型数据结构,它使得一个单一变量可以存储多种类型的相关数据.在 C 语言中还有一种和结构体非常类似的语法,叫共用体(Union),有时也被直译为 ...
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...
- 瘋子C语言笔记(结构体/共用体/枚举篇)
(一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student { int num; char name ...
- 全国计算机等级考试二级教程-C语言程序设计_第14章_结构体、共用体和用户定义类型
函数的返回值是结构体类型 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> struct ...
- C语言博客作业06——结构体&文件
C语言博客作业06--结构体&文件 1.本章学习总结 1.1思维导图 1.2.本章学习体会 在本周的学习中,我们学习了关于结构体和文件的内容.结构体的本身并不难,但以结构体为基础的链表还是让我 ...
随机推荐
- 织梦SQL标签的使用
(>=DedeCMS 3,DedeCMS 4,DedeCMS 5) 名称:sql 功能:用于获取MySQL数据库内容的标签 语法: 1 2 3 {dede:sql sql='' appname= ...
- bzoj2002 弹飞绵羊
Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置 ...
- java ssl https 连接详解 生成证书 tomcat keystone
java ssl https 连接详解 生成证书 我们先来了解一下什么理HTTPS 1. HTTPS概念 1)简介 HTTPS(全称:Hypertext Transfer Protocol over ...
- 魅族pro6部分应用内adb断开连接
魅族pro6打开支付宝,adb自动断开链接,顶部有Flyme自动保护中. 进入手机管家的设置,将Flyme支付保护关掉 再次进入支付宝页面,adb不会再自动断开链接
- ZooKeeper 集群的安装、配置---Dubbo 注册中心
ZooKeeper 集群的安装.配置.高可用测试 Dubbo 注册中心集群 Zookeeper-3.4.6 Dubbo 建议使用 Zookeeper 作为服务的注册中心. Zookeeper 集群中只 ...
- 基于nginx和tengine的tcp反向代理,负载均衡 安装和配置
先下载nginx_tcp_proxy_module模块. wget https://github.com/yaoweibin/nginx_tcp_proxy_module/archive/master ...
- 解决thinkphp设置session周期无效的问题
thinkphp的session设置周期是无效的:直接的影响就是无法保留用户的登陆状态:用thinkphp开发的项目:关闭浏览器后用户就退出了:即便设置了session周期也没作用:这个bug存在很久 ...
- Unreal Engine 4 反射机制的实现
转自:http://blog.csdn.net/noahzuo/article/details/51482255 反射机制 反射机制指的是程序可以在运行期间进行检测和修改自己状态的能力. UE4引擎使 ...
- Java 运算符-=,+=混合计算详解
+=与-=运算符混合计算解析: int x = 3; x += x -= x -= x += x -= x; 详解:算数运算按运算符优先级运算,从右至左计算. 1. x=x-x; 实际为 3 - 3 ...
- nodejs基础: 如何升级Noejs版本
Node.js的开发非常活跃,它的最新稳定版本也频繁变化,你不时会发现,一个模块不能在你当前的Node版本上使用,此时你需要升级Node 幸运的是,可以用一种非常简单的方法来管理你的Node版本,即使 ...