文件

  • 栈:局部变量,程序运行期间变量大部分都是有栈分配的,内存空间比较小,系统自动回收资源。

  • 堆:堆空间比较大,可以有程序员自由自配,只能手动申请和释放
    (malloc()申请的空间在堆上,由free()释放掉)
    malloc和free必须成对出现。。

  • 段错误:
    指针:常量指针/NULL/野指针
    数组:数组的越界访问,访问到非法区或者修改了其他的变量
    其他:
    内存不足
    双释放
    内存泄漏

栈和队列

top->栈顶指针
栈:先进后出
队列:后进后出

  • 压栈:push();
  • 出栈:pop();
    每次压栈一次top向上一位。
    当栈顶指针top在栈顶时,满栈!!!
    每出栈一次top向下移一位。
    例如:
    a,b,c,d,e按顺序压入栈中:
    不可能的出栈顺序:
    A:abcde
    B:edcba
    C:decab
    D:decba

  • 条件预编译:
    #if 表达式
    #else
    #endif

文件

-:普通文件
d:目录文件
l:链接文件
p:管道文件
b:块设备文件
c:字符文件
(1)文件系统
文件信息:索引节点(index)
文件操作:文件描述符(fd)
fd最大值
早期的Unix系统: 1024
linux系统: 65535

(2)文件的定义
一组相关数据的有序集合,称为文件!
(3)文件的打开和关闭
打开:fopen(文件名,属性);
关闭:fclose(文件指针);

  • 注:
    文件不关闭,则会造成数据的丢失
    文件指针:
    文件指针结构体:FILE
    包含了文件的基本信息
    定义文件指针
    FILE *指针变量名;
    文件名:可以是已存在的,也可以是不存在的
    属性:
    r(读) w(写) a(追加)
    +: 可读写
    t : 文本文件
    b: 二进制文件
    rt,wt,at,rb,wb,ab,rt+,wt+,at+,rb+,wb+,at+
    r,r+
    w,w+
    a,a+
    rt+/wt+:可读写
    rt/rb:只读
    wt/wb:只写,带w属性的,可以写文件,若文件已存在,则清空,
    重新建立文件;若不存在,则以给定文件名创建文件;
    r:带r属性的文件,文件必须存在!!!

(4)文件的操作
fgetc()/fputc():字符读写函数
fgets()/fputs():字符串读写函数
fsanf()/fprintf():格式化读写函数
fread()/fwrite():块读写函数


  • 重点掌握fscanf()/fprintf()或者fread()/fwrite()至少掌握一种
    在C89标准中,fread()/fwrite()有BUG!!!

文件结束标志:EOF(end or fail)

  • 5.fgetc()/fgets()
    fgetc(文件指针);//从给定文件中读取一个字符
    fgutc(ch,文件指针);//添加一个字符到指定文件中
  • 6.fgets()/fputs()
    fgets(字符数组/字符串常量/指针,size,fp);
    从fp获得size-1长度,在末尾加"\0"
    碰到“EOF”或者换行符结束;
    arr可以是字符数组,或者字符串常量,
    fputs(arr,fp);
    将字符串写入到fp中!!!

stdin: 标准输出---->键盘
stdout:标准输入----->终端
stderr:标准输出----->终端

  • 7,
    fscanf(fp,"格式",参数列表)
    fprintf(fp,"格式",参数列表)
#include<stdio.h>
void fscanf_file()
{
    FILE *fp = fopen("123.txt","r");
    if(NULL == fp)
    {
        perror("open failed!\n");
        return;

    }

    int ID;
    char buf[32] = {0};

    fscanf(fp,"%d,%s",&ID,buf);
    //输出文件内容  和fprintf的占位符格式必须一一对应
    printf("ID = %d\tname = %s\n",ID,buf);
    fclose(fp);
);

}
int main()
{
    FILE *fp = fopen("123.txt","w+");
    if(NULL == fp)
    {
        printf("open failed!\n");
        return -1;
    }
    int num = 124;
    char name[32] = "helloo";

    //格式化写入(按一定格式输入)
    fprintf(fp,"%d,%s",num,name);

    fclose(fp);
//  fscanf_file();
    return 0;
}

读取时是什么格式,输出时必须是同样的格式
8.fread()/fwrite() //块读写函数
fread(address,size,count,fp);//读
<-------------
fwrite(address,size,count,fp);//写
--------------->
address:为指针类型,一般为结构体类型
sizeof():一般为结构体类型的大小;
count:一般为1
fp:文件指针

#include<stdio.h>
#include<string.h>
typedef struct student
{
    int ID;
    char name[32];
}STU;

void struct_write(STU temp)
{
    FILE *fp = fopen("struct_read.txt","w+");
    if(NULL == fp)
    {
        perror("open failed!!\n");
        return;
    }

    fwrite(&temp,sizeof(STU),1,fp);
    rewind(fp);
    
    STU stu;
    fread(&stu,sizeof(STU),1,fp);
    printf("ID = %d\nname = %s\n",stu.ID,stu.name);
    fclose(fp);

}
int main(int argc,char *argv[])
{   
    STU stu;
    stu.ID = 123;
    strcpy(stu.name,"defdf");
    struct_write(stu);
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • 昨日回顾: #define LEN sizeof(STU)//malloc():得到的是一块内存空间,将指针tem...
    穹蓝奥义阅读 422评论 0 1
  • [TOC] UNIX的哲学,万物皆文件. 打开关闭文件 FILE * fopen(const char *file...
    robinguo2012阅读 719评论 0 0
  • 我给予等同我接受 最先要给予的是我们自己,我们必须要像宇宙爱我们一样无条件爱自己,全然的给予自己。 谦让,为他人着...
    四月天儿0315阅读 232评论 0 0
  • 午间小憩。实在假寐不了。躺不住,坐不了。想起戴望舒的《雨巷》,那个撑着油纸伞,独自哀怨彷徨在寂寥雨巷的孤独男子,希...
    Sundayou阅读 321评论 0 0
  • 你问我的时候,我说了实话 我更愿意做个诗人,诗人注定是要去流浪的 总归是要前行,哪里都是方向,哪里都是目的地 或者...
    许飞龙阅读 79评论 0 1